Проблема с Raycast

Физика в Unity

Проблема с Raycast

Сообщение TimmyMulla 18 фев 2010, 12:26

Всем привет.
Столкнулся с такой проблемой. Написал скрипт, повесил его на объект, настроил - работает.
Повесил этот же скрипт на другой объект, так же настроил - не работает.
Помогите, плз )

Синтаксис:
Используется javascript
var isActive = false;
var Target : Transform;
var _light : Transform;

var ray : Ray;
var hit : RaycastHit;

function Update() {

        if (isActive) {
       
                //
                gameObject.transform.LookAt(Target);
                gameObject.transform.Translate(Vector3.forward * Time.deltaTime*3);
       
        }
        else {
               
                //
                ray = new Ray (transform.position,Target.transform.position - transform.position);     
               
                if (Physics.Raycast (ray, hit, 15)) {
               
                        Debug.DrawRay (transform.position,Target.transform.position - transform.position, Color.red);                  
                        Debug.Log(hit.distance);
                       
                        if (hit.distance < Target.GetComponent(Variables).lightRadius) {
                                _light.light.intensity = 1;            
                                isActive = true;
                        }                      
                }
        }
}
 


Проблема в том, что isActive становится true на любом расстоянии.
А это Debug.Log(hit.distance); выводит всегда 0.
Хэлп )
Аватара пользователя
TimmyMulla
UNец
 
Сообщения: 47
Зарегистрирован: 13 фев 2010, 10:07
Откуда: Екатеринбург

Re: Проблема с Raycast

Сообщение Paul Siberdt 18 фев 2010, 12:34

эээ.. для начала, опишите не проблему, а то, что вы хотите получить :)

Повесил ваш скрипт на кубик, назначил таргет, закоментил непонятную проверку с компонента Variables... в логе очень даже отличные от нуля значения хит.дистанса
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Проблема с Raycast

Сообщение TimmyMulla 18 фев 2010, 18:02

Спасибо за тест.

Пытаюсь заставить один кубик бегать за другим кубиком, если второй приблизится к первому на определенное расстояние.
Непонятный Variables - это скрипт, в котором есть переменная "радиус". Собственно бегать кубик должен начать, когда к нему приблизятся на расстояние = радиус. Что-то типа этого )

Попробовал написать все с нуля - работает. Повесил новый скрипт на еще один кубик - не работает.
Вообщем, что-то совсем непонятное. Наверно нужен бубен... Пойду шаманить )
Аватара пользователя
TimmyMulla
UNец
 
Сообщения: 47
Зарегистрирован: 13 фев 2010, 10:07
Откуда: Екатеринбург

Re: Проблема с Raycast

Сообщение Paul Siberdt 18 фев 2010, 20:54

Погодите-погодите... а зачем вам трассировка?

Пускай кубик-охотник знает кубик-жертву. Тогда вам достаточно проверять расстояние между ними (если очень нужно, можно компенсировать объем, но вряд ли это критично)
Просто проверяйте расстояние по:
Код: Выделить всё
Vector3.Distance(myTransform.position,myTarget.position)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Проблема с Raycast

Сообщение TimmyMulla 18 фев 2010, 22:40

Хм... Эм... Железная логика (с) :-bd

Спасибо )
Аватара пользователя
TimmyMulla
UNец
 
Сообщения: 47
Зарегистрирован: 13 фев 2010, 10:07
Откуда: Екатеринбург


Вернуться в PhysX

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3