Raycast к мировой координате.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Raycast к мировой координате.

Сообщение magicarm22 27 май 2013, 21:13

Всем снова добрый вечер. Опять запнулся, но уже на raycast.

Синтаксис:
Используется csharp
Vector3 fwd = transform.TransformDirection(Vector3.forward);
        if (Physics.Raycast(transform.position, fwd, Range))
                {
            print("There is something in front of the object!");
                }
                else
                {
                print("Nothing");
                }

Когда использую эту "вещь", всегда пишет Nothing. Потом, когда я меня код с использованием DrawLine, линия ведет к координате 0.0.0. А как сделать так, чтобы вектор шел туда, куда смотришь, а не на начало координат?
magicarm22
UNец
 
Сообщения: 31
Зарегистрирован: 27 май 2013, 13:12

Re: Raycast к мировой координате.

Сообщение seaman 27 май 2013, 21:17

transform.forward
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Raycast к мировой координате.

Сообщение magicarm22 27 май 2013, 21:26

Не помогло.
Вот новый код:

Синтаксис:
Используется csharp
Vector3 DirectionRay = transform.forward;
                RaycastHit Hit;
                Debug.DrawLine(transform.position, DirectionRay, Color.red, 8);
                if(Physics.Raycast(transform.position, DirectionRay,out Hit ,Range)){  
            if(Hit.collider.tag == "Enemy" ){  
                        Destroy(Hit.collider.gameObject);
                        }
                }

Все равно линия ведет к начале координат. Что не так?
magicarm22
UNец
 
Сообщения: 31
Зарегистрирован: 27 май 2013, 13:12

Re: Raycast к мировой координате.

Сообщение seaman 27 май 2013, 22:29

Что не так? А не так то, что не читаете мануал => не понимаете какие аргументы у функций. У DrawLine - второй аргумент не направление, а позиция.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Raycast к мировой координате.

Сообщение Mumboo 27 май 2013, 22:40

Если вывести Vector3.forward через Debug.Log, то он покажет (0, 0, 1), так-что всё правильно работает...

Debug.DrawRay вместо Debug.DrawLine:

Синтаксис:
Используется csharp
Vector3 DirectionRay = transform.forward;
                 RaycastHit Hit;
                 Debug.DrawRay(transform.position, DirectionRay, Color.red, 8);
                 if(Physics.Raycast(transform.position, DirectionRay,out Hit ,Range)){  
             if(Hit.collider.tag == "Enemy" ){  
                         Destroy(Hit.collider.gameObject);
                         }
                 }
Последний раз редактировалось Mumboo 27 май 2013, 22:45, всего редактировалось 2 раз(а).
Mumboo
UNITрон
 
Сообщения: 166
Зарегистрирован: 22 май 2013, 22:12

Re: Raycast к мировой координате.

Сообщение Kayler 27 май 2013, 22:42

transform.forward это направление, конечно оно будет на нулевые координаты идти потому что направление от 0 до 1 (0,0,1 если смотрим вперед)
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Raycast к мировой координате.

Сообщение magicarm22 28 май 2013, 07:29

Всем спасибо и простите, что не читаю мануал. И все же, последний вопрос. Код, который мне предоставили выше, работает, но линия отображается размером с капсулу. А как сделать, что бы она была длинной, равной переменной Range = 1000?
magicarm22
UNец
 
Сообщения: 31
Зарегистрирован: 27 май 2013, 13:12

Re: Raycast к мировой координате.

Сообщение Mumboo 28 май 2013, 08:38

magicarm22 писал(а): А как сделать, что бы она была длинной, равной переменной Range = 1000?

Синтаксис:
Используется csharp
Debug.DrawRay(transform.position, DirectionRay * Range, Color.red, 8);
Mumboo
UNITрон
 
Сообщения: 166
Зарегистрирован: 22 май 2013, 22:12

Re: Raycast к мировой координате.

Сообщение Diab10 28 май 2013, 08:53

magicarm22 писал(а):Всем спасибо и простите, что не читаю мануал. И все же, последний вопрос. Код, который мне предоставили выше, работает, но линия отображается размером с капсулу. А как сделать, что бы она была длинной, равной переменной Range = 1000?


А самому подумать?
8 видим? меняем на 1000
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Raycast к мировой координате.

Сообщение Mumboo 28 май 2013, 08:57

А самому подумать?
8 видим? меняем на 1000


Не совсем так...
8 - это число, сколько секунд будет отображаться луч, а не длина :)
А дабы увеличить длину луча нужно Направления луча умножить на число...
Mumboo
UNITрон
 
Сообщения: 166
Зарегистрирован: 22 май 2013, 22:12

Re: Raycast к мировой координате.

Сообщение Diab10 28 май 2013, 09:16

Уупс x_x
8-}
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 30