forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

SaM_ 29.03.2012 19:53

Ответ: Фак по Юнити.
 
Действую на него с огромной силой. Видимо перемещение просчитывается быстрей чем столкновение. :mad:

pax 29.03.2012 20:01

Ответ: Фак по Юнити.
 
Поставь для объекта детекцию столкновений в Continues или Coninues Dynamic

SaM_ 29.03.2012 20:06

Ответ: Фак по Юнити.
 
Как просто... Помогло, спасибо.

WISHMASTER35 29.03.2012 20:21

Ответ: Фак по Юнити.
 
SaM_, что это за пуля такая? Если граната, то кажется в юнити можно было делать взрыв, который бы раскинул все объекты. Только не помню как.

SaM_ 29.03.2012 20:47

Ответ: Фак по Юнити.
 
WISHMASTER35, Physics.Raycast

WISHMASTER35 29.03.2012 22:45

Ответ: Фак по Юнити.
 
Вложений: 1
Я не пойму это нормально для 3D text?
Некоторые буквы впритык, некоторые на большом расстоянии друг от друга.
Да и текст поднят слишком высоко. Текст должен быть так, что бы буквы A,B,C были на уровне с осью X. А в данном случае ось X на уровне с хвостиками g,p,q,y.

pax 29.03.2012 23:50

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 224079)
Текст должен быть так, что бы буквы A,B,C были на уровне с осью X.

Скажи это юнитеху)

WISHMASTER35 30.03.2012 00:00

Ответ: Фак по Юнити.
 
pax, ну а если серьезно, то это нормально? Разное расстояние между буквами вообще раздражает.

SaM_ 30.03.2012 00:05

Ответ: Фак по Юнити.
 
Как определить наведен ли луч на предмет?
Луч пускается из скрипта "A". Надо в скрипте "B" определить падает ли на предмет, к которому данный "B" скрипт подключен, луч из скрипта "A".
Как реализовать? :dontknow:

pax 30.03.2012 00:24

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 224087)
pax, ну а если серьезно, то это нормально? Разное расстояние между буквами вообще раздражает.

Пиши свои шрифты если не нравится, я например как-то писал)
http://shgames.ru/unity/font/


Цитата:

Сообщение от SaM_ (Сообщение 224088)
Как определить наведен ли луч на предмет?
Луч пускается из скрипта "A". Надо в скрипте "B" определить падает ли на предмет, к которому данный "B" скрипт подключен, луч из скрипта "A".
Как реализовать? :dontknow:

В скрипте "A" при попадании в объект со скриптом "B" слать ему сообщение например.

PHP код:

var hit.collider.GetComponent<B>();
if (
b!= null)
{
  
b.SomeFuncOfB();



SaM_ 30.03.2012 00:58

Ответ: Фак по Юнити.
 
PHP код:

Vector3 ray transform.TransformDirection(Vector3.forward);
Debug.DrawLine(transform.positionrayColor.green);
pickup ray.collider.GetComponent<rev_pickup>(); 


Цитата:

error CS1061: Type `UnityEngine.Vector3' does not contain a definition for `collider' and no extension method `collider' of type `UnityEngine.Vector3' could be found (are you missing a using directive or an assembly reference?)
Почему ошибку выдает? Скрипт rev_pickup уже подключен к предмету с collider. (C#)

WISHMASTER35 30.03.2012 01:35

Ответ: Фак по Юнити.
 
Вложений: 2
SaM_, у тебя ray это Vector3.
pax, ну хоть не мне одному не нравится стандартный шрифт)) Пишу. По-моему лучше выглядит. Только сделать привязку шрифта как хотел так и не получилось. Хотя, возможно это и не надо. Привык как в java.
У тебя, кстате, может меняться смещение буквы в зависимости от того какая была предыдущая буква?

pax 30.03.2012 08:00

Ответ: Фак по Юнити.
 
У меня шрифт генерирует какая-то утилита, в ней все параметры.

2SAM_ тебе нужен не просто луч, тебе нужно выполнить операцию бросания луча http://unity3d.com/support/documenta...s.Raycast.html

SaM_ 30.03.2012 18:02

Ответ: Фак по Юнити.
 
pax, приведи пример скрипта в моем случае пожалуйста, никак не выходит, все время эта ошибка.

pax 30.03.2012 19:40

Ответ: Фак по Юнити.
 
PHP код:

Debug.DrawLine(transform.positiontransform.forwardColor.green); 
Ray ray = new Ray(transform.positiontransform.forward);
RaycastHit hit;
if (
Physics.Raycast(rayout hit100))
{
    
pickup hit.collider.GetComponent<rev_pickup>();
    if(
pickup != null)
    {
        
//луч попал в rev_pickup

    
}



WISHMASTER35 31.03.2012 01:01

Ответ: Фак по Юнити.
 
Сейчас столкнулся с такой проблемой, что большой текст не правильно сортируется с другими объектами и перекрывается объектами, которые за ним. Это можно как-то исправить? Хотя даже стандартный 3д текст имеет такую проблему. Это конечно, если в 3д, а не 2д.
Цитата:

У меня шрифт генерирует какая-то утилита, в ней все параметры.
А грузишь, рисуешь шрифт ты же?

pax 31.03.2012 09:38

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 224157)
А грузишь, рисуешь шрифт ты же?

я

Цитата:

Сообщение от WISHMASTER35 (Сообщение 224157)
Это можно как-то исправить?

Ну не сортировать текст, а рисовать с помощью какого-нибудь Transparent/Cutout шейдера....

SaM_ 31.03.2012 16:45

Ответ: Фак по Юнити.
 
Где можно найти исходник FPS проекта на C#? Управление персонажем на C#, а не jawa, как в FPStutorial.

WISHMASTER35 31.03.2012 17:02

Ответ: Фак по Юнити.
 
SaM_, вот простой пример http://4pda.ru/forum/index.php?showt...#entry11439440

SaM_ 31.03.2012 17:09

Ответ: Фак по Юнити.
 
WISHMASTER35, там почти все ссылки битые :c

WISHMASTER35 31.03.2012 18:18

Ответ: Фак по Юнити.
 
SaM_, тебе все и не надо. То что я тебе дал качает. Только надо быть зарегистрированным.

pax 31.03.2012 18:25

Ответ: Фак по Юнити.
 
http://files.m2h.nl//js_to_c.php

SaM_ 31.03.2012 20:28

Ответ: Фак по Юнити.
 
Хочу реализовать вылетание гильз при стрельбе. Как придать силу объекту при спавне?
Спавню так:
PHP код:

Rigidbody g;
Instantiate(glzmyTransform.positiontransform.rotation) as Rigidbody


pax 31.03.2012 21:22

Ответ: Фак по Юнити.
 
а glz это RigidBody?
g.AddForce(vector3, ForceMode.Impulse);

SaM_ 31.03.2012 21:31

Ответ: Фак по Юнити.
 
Как можно изменять настройки NavMeshPath из скрипта?

pax 31.03.2012 21:36

Ответ: Фак по Юнити.
 
Тут я пока не помощник, не было на него времени

WISHMASTER35 31.03.2012 22:42

Ответ: Фак по Юнити.
 
Я делал гильзы системой частиц. Точнее взял их из bootcamp. Жаль только коллизии гильз нету. Но и на каждую частицу по Rigidbody это наверно жирно очень.

SaM_ 31.03.2012 22:47

Ответ: Фак по Юнити.
 
pax, дико баговое нововведение, советую пока не связываться.

SaM_ 01.04.2012 13:01

Ответ: Фак по Юнити.
 
Есть много однотипных (из одного прифаба) предметов. На всех повешен один и тот же скрипт.
Как из повешенного на них скрипта определить, что луч выпущенный из игрока, наведен именно на ЭТОТ предмет, и после нажатия определенной кнопки, удалиться именно ЭТОТ предмет.

RegIon 01.04.2012 13:19

Ответ: Фак по Юнити.
 
ввести
public static GameObject ObjInRay в скрипте игрока,
там же:
ObjInRay=hit.colider.gameobject;
а потом просто из ПОВЕШЕННОГО на ПЕРЕФРАБЫ скрипта проверить
if(this==имяскриптаплеера.ObjInRay){
if(Input.GetButton("del")) { удаляем нафиг его}
}

..так наверно

pax 01.04.2012 13:25

Ответ: Фак по Юнити.
 
Проще удалять из скрипта игрока ;)

SaM_ 01.04.2012 13:29

Ответ: Фак по Юнити.
 
pax, а как удалять предмет из скрипта игрока, на который наведен луч в данный момент? Можно определить имя или тег предмета, но если удалять по этим данным, то удалятся все предмет с этим тегом или именем со сцены.

Lestar 01.04.2012 13:34

Ответ: Фак по Юнити.
 
Ты же из игрока пускаешь луч и кастуешь. Вот то,что получил, то и удаляй.

pax 01.04.2012 13:44

Ответ: Фак по Юнити.
 
Проверяй на наличие скрипта (GetComponent<ТипКомпонента>()) удаляй объект

SaM_ 01.04.2012 13:47

Ответ: Фак по Юнити.
 
Сделал так:
PHP код:

Debug.DrawLine(transform.positiontransform.forwardColor.green); 
Ray ray = new Ray(transform.positiontransform.forward);
RaycastHit hit;

if (
Physics.Raycast(rayout hit100)) 
{
    
ObjInRay hit.collider.gameObject
    if (
hit.collider.gameObject.tag == "dlt" &&  Input.GetKeyDown("g")) 
    {
        
Destroy (ObjInRay);
    }


Если навести луч на предмет с тегом "dlt", а затем нажать "g", то этот предмет удалится со сцены.

Цитата:

Проверяй на наличие скрипта
pax, это первое с чего я начал, но в таком случае будут удалятся все объекты с этим скриптом.

SaM_ 01.04.2012 18:55

Ответ: Фак по Юнити.
 
Почему в данном блоке boolean переменные не выполняются?
PHP код:

Ray ray = new Ray (mypos.positionmypos.forward);
RaycastHit hit;
if (
Physics.Raycast(rayout hit3)) 
{
    
ObjInRay hit.collider.gameObject
    if (
hit.collider.gameObject.tag == "weapon_01" && Input.GetKey("g")) 
        {
            
weapon_slot2 true
            
weapon_slot1 false
            
weapon_slot3 false;
                
            
weapon_01 true;
            
01_picked true;
        }


Переменные bool задаются так например: public bool 01_picked = false;
А блок в Update();

WISHMASTER35 01.04.2012 19:13

Ответ: Фак по Юнити.
 
SaM_, потому что какое-то условие не выполняется. Ты уверен, что луч длиной 3 достает до какого-то объекта с твоим тегом weapon_01?

Как вписать текстуру в инспектор?
Пишу так
Код:

Rect rect = EditorGUILayout.BeginHorizontal();
EditorGUILayout.EndHorizontal();
rect.height = rect.width * ((float)tex.height/tex.width);
GUI.DrawTexture(rect, tex);

Но если дальше рисовать, то оно рисуется не после текстуры, а по ней. Надо как-то в GUILayout отступ сделать.
Т.е. отступить можно так GUILayout.Space
Но проблема в том что rect.height равно нулю при событии Layout.

Вот как прекрасно в две строчке решилась эта проблема
Rect rect = GUILayoutUtility.GetAspectRect((float)tex.height/tex.width);
GUI.DrawTexture(rect, tex);

WISHMASTER35 01.04.2012 19:55

Ответ: Фак по Юнити.
 
Теперь другая проблема. Надо в инспекторе сделать выбор тайла на текстуре-атласе. Хотел обрисовывать выбранный тайл линиями, но как нарисовать эти линии в инспекторе?

Хотя через GL рисует. GL доступен же в инди версии? А то я считал, что он только в про.

SaM_ 01.04.2012 20:30

Ответ: Фак по Юнити.
 
WISHMASTER35, условие выполняется 100%. Если, как в предыдущем посте, вписать Destroy(GameObject); то выполнятся будет, если же назначать bool'у другое значение в данном блоке или просто вписать i=1, то выполнятся не будет. Почему?

WISHMASTER35 01.04.2012 21:55

Ответ: Фак по Юнити.
 
SaM_, от того, что ты написал в блоке ничего не изменится. Если оно конечно не влияет на результат твоих условий.
Вообще проверяй выполнение условий через Debug.log.

SaM_ 01.04.2012 22:31

Ответ: Фак по Юнити.
 
Все перепроверил, должно работать. Подозреваю, что это очередной баг новой 3.5 :mad:

...

Да, это баг новой unity. Проверил тот же скрипт на 3.2 - работает.

pax 02.04.2012 06:29

Цитата:

Сообщение от SaM_ (Сообщение 224276)
Почему в данном блоке boolean переменные не выполняются?

самый более менее правильный способ обработки, который снизит нагрузку на физику:
PHP код:

Ray ray = new Ray (mypos.positionmypos.forward);
RaycastHit hit;

if (
Input.GetKeyDown("g") && Physics.Raycast(rayout hit3)) 
{
    
ObjInRay hit.collider.gameObject
    if (
hit.collider.gameObject.tag == "weapon_01"
        {
            
weapon_slot2 true
            
weapon_slot1 false
            
weapon_slot3 false;
                
            
weapon_01 true;
            
01_picked true;
        }




Цитата:

Сообщение от WISHMASTER35 (Сообщение 224279)
Теперь другая проблема. Надо в инспекторе сделать выбор тайла на текстуре-атласе. Хотел обрисовывать выбранный тайл линиями, но как нарисовать эти линии в инспекторе?

Хотя через GL рисует. GL доступен же в инди версии? А то я считал, что он только в про.

Handles.DrawLine(), GUI.Label с необходимым стилем и размером.

SaM_ 02.04.2012 15:53

Ответ: Фак по Юнити.
 
Как изменить transform.rotation по игреку при спавне? И как его заблокировать, оставив не тронутыми x,z.

g = Instantiate(drop, new Vector3(mypos.position.x + 1, mypos.position.y - 1.5F, mypos.position.z), transform.rotation) as Rigidbody;

pax 02.04.2012 16:16

Ответ: Фак по Юнити.
 
может transform.localEulerAngles?
А так умножить например на Quaternion.AngleAxis(угол, ось);
ось может быть Vector3.up или transform.up

UPD: порядок операндов при умножении имеет значение. Какой именно нужен - не помню, пробуйте.

SaM_ 02.04.2012 16:31

Ответ: Фак по Юнити.
 
pax, попробую.
Сразу хочу спросить. Хочу написать скрипт для загрузки LOD мешей, что бы не нагружать оп. Разумно ли, если подзагрузка будет основана на вычислении расстоянии от игрока до предмета, и если например, расстояние больше 20 метров, то делаем модель высокого качества невидимой, а lod модель - видимой? Или есть другие способы?

pax 02.04.2012 16:35

Ответ: Фак по Юнити.
 
http://unity3d.com/support/documenta...-LODGroup.html

WISHMASTER35 03.04.2012 12:54

Ответ: Фак по Юнити.
 
Есть один объект сериализованного класса. На него ссылаются две сериализованные ссылки. После перезапуска юнити, эти ссылки должны ссылаться на один объект или для каждой ссылки создастся свой объект?

pax 03.04.2012 13:25

Ответ: Фак по Юнити.
 
Конкретнее что за объект сериализаованного класса?

WISHMASTER35 03.04.2012 13:45

Ответ: Фак по Юнити.
 
Мой класс. Не скрипт.
Если класс - скрипт, все все ссылки будут ссылаться на один объект.
А если не унаследован от MonoBehaviour, то похоже для каждой ссылки создается объект. Или я в чем-то другом туплю.

И еще. Как такое реализовать. Делаю свой GUI. Есть как в NGUI класс Атлас и спрайты(координаты на атласе) и виджеты, которым задаются текстурные координаты из спрайта.
Как сделать, что бы когда я редактировал координаты спрайта, то ни сразу же применялись к виджету?

pax 03.04.2012 13:49

Ответ: Фак по Юнити.
 
Свой класс - естественно разные экземпляры будут. Если надо сохранять что-то общее без MonoBehaviour, то вероятно надо создавать ScriptableObject и сохранять как ассет. Как например сделаны физические материалы.

По поводу GUI ты волен делать как тебе угодно, ты же его пишешь. Я не понимаю что такое виджет.

WISHMASTER35 03.04.2012 14:05

Ответ: Фак по Юнити.
 
А возможно отложенную инициализацию свойства сделать?
Код:

private MeshFilter filter {
                get {
                        if(filter == null) filter = GetComponent<MeshFilter>();
                        return filter;
                }
                set {
                        filter = value;
                }
}

Так происходит зацикливание и юнити закрывается с ошибкой(

pax 03.04.2012 14:08

Ответ: Фак по Юнити.
 
ну а что ты хотел? обращаешься к свойству внутри него самого - рекурсия.
PHP код:

private MeshFilter _filter
public MeshFilter filter {
        
get {
            if(
_filter== null_filter GetComponent<MeshFilter>();
            return 
_filter;
        }
        
set {
            
_filtervalue;
        }



WISHMASTER35 03.04.2012 14:09

Ответ: Фак по Юнити.
 
Т.е. то что я хотел никак не написать?

pax 03.04.2012 14:13

Ответ: Фак по Юнити.
 
см. пример выше

cahekp 03.04.2012 19:37

Ответ: Фак по Юнити.
 

Цитата:

Сообщение от pax (Сообщение 224392)
см. пример выше

И как ты только умудряешься постоянно, спокойно и, что самое удивительное, вполне вежливо отвечать на подобные вопросы?
Имею ввиду, когда ты полностью ответил на заданный вопрос (еще и код привел!), а тебя после этого опять спрашивают о том же? Нет, ну ты явно сверхчеловек! :)
А всех спрашивающих подобные вещи так и хочется штрафовать, выводя перед каждым отправляемым сообщением большое окно: "Уважаемые спрашивающие! Невнимательность - страшная вещь. Читайте ответные сообщения более вдумчиво!". И чтоб она еще как реклама была.. Фиг просто так от нее избавишься. )

RegIon 03.04.2012 19:47

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от cahekp (Сообщение 224411)


И как ты только умудряешься постоянно, спокойно и, что самое удивительное, вполне вежливо отвечать на подобные вопросы?
Имею ввиду, когда ты полностью ответил на заданный вопрос (еще и код привел!), а тебя после этого опять спрашивают о том же? Нет, ну ты явно сверхчеловек! :)
А всех спрашивающих подобные вещи так и хочется штрафовать, выводя перед каждым отправляемым сообщением большое окно: "Уважаемые спрашивающие! Невнимательность - страшная вещь. Читайте ответные сообщения более вдумчиво!". И чтоб она еще как реклама была.. Фиг просто так от нее избавишься. )

Ты ещё не всё знаешь-ОН ТАК ОТВЕЧАЕТ ВСЕГДА, и не только на форуме

pax 03.04.2012 20:43

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от cahekp (Сообщение 224411)
И как ты только умудряешься постоянно

Так проще :pardon:

WISHMASTER35 03.04.2012 21:08

Ответ: Фак по Юнити.
 
cahekp, когда куча переменных и на каждую еще создавать и свойство с почти таким же названием, а потом путаться с полями и свойствами это не совсем то что я хотел. Хотя это может иметь смысл, если внутри класса это поле и свойство не используются.
Пока я предпочитаю вообще свойства не использовать. Когда среди переменных какой-то левый код, то он мне глаза мусолит. Но правда при использовании свойства код выглядит проще.
А пример я тогда кажется и вправду пропустил))

SaM_ 04.04.2012 15:43

Ответ: Фак по Юнити.
 
Народ, помогите все таки написать кусочек скрипта, который будет "отбрасывать" префаб вперед относительно игрока :3 Не получается никак, как бы не пробовал.
То есть, надо реализовать выброс предмета из рук.
(С#)
PHP код:

public Rigidbody drop;
Update() {
if (
Input.GetKeyDown("g")) {
Instantiate(drop, new Vector3transform.position.1,  transform.position.y,  transform.position.z), Quaternion.identity);
... 

И еще, почему если использовать new Vector3( tra... то предмет падает относительно игрока со сдвигом, как и запланировано, но в какую бы сторону игрок не повернулся, спавн происходит в одном месте.

Amatsu 04.04.2012 15:55

Ответ: Фак по Юнити.
 
Нет ли у кого ссылки на исходник билдовых шейдеров юнити? Конкретно интересует исходник Transparent/Diffuse

pax 04.04.2012 16:48

Ответ: Фак по Юнити.
 
2Amatsu: http://unity3d.com/support/resources...ilt-in-shaders

2SaM_ времени проверять нет, так что
PHP код:

public Rigidbody drop;
Update() {
if (
Input.GetKeyDown("g")) {
var 
rb Instantiate(droptransform.position transform.forwardQuaternion.identity) as Rigidbody;
rb.AddForce(transform.forward 1000ForceMode.Impulse); 


SaM_ 04.04.2012 18:15

Ответ: Фак по Юнити.
 
pax, теперь объект спавнится относительно игрока правильно. Но во время спавна толчка\откидывания нет :c

pax 04.04.2012 19:18

Ответ: Фак по Юнити.
 
Ошибки есть? Увеличь силу с 1000 на 10000 например.

SaM_ 04.04.2012 20:14

Ответ: Фак по Юнити.
 
Вот такую ошибку выдает:
Цитата:

NullReferenceException: Object reference not set to an instance of an object
weapon_system.Update () (at Assets/Scripts/weapon_system.cs:72)


Часовой пояс GMT +4, время: 10:13.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot