2014-12-03 1 views
-1

В основном, моя проблема заключается в следующем: когда игрок получает строку, мне нужно моделировать будущее движение игрока, чтобы определить, столкнется ли оно с некоторой «угрозой». Для этого я делаю клон игрока и угрозы в его/ее пути. Например, если игрок находится на дороге с четырьмя полосами движения, мне нужно знать, столкнется ли он с угрозой, которая находится в его/ее текущей полосе. Мне нужна линия от корабля игрока и проверьте, не столкнется ли эта линия с какой-то угрозой. Невозможно использовать триггеры, потому что я делаю эту симуляцию только в одном кадре.Обнаружение столкновений в Unity3d, не использующем OnTriggerEnter

Спасибо

+0

одно слово «RayCast» – Catwood

ответ

1

Для вашего требования Ray Casting является решением. Ray Casting формирует линию или вектор из определенной точки в другую точку в трехмерной плоскости. Целью луча (вектора) является определение того, пересекается ли он с любыми коллайдерами или другими игровыми объектами.

Это может быть просто использован как,

void Update() { 
    Vector3 fwd = transform.TransformDirection(Vector3.forward); 

    // parameters are origin, direction and length of the ray. 
    if (Physics.Raycast(transform.position, fwd, 10)){ 
     print("There is something in front of the object!"); 
    } 
} 

Вы можете найти больше ссылок и учебники в Интернете. Попробуйте официальное учебное пособие Unity по Raycasting

+1

вы, вероятно, захотите также взглянуть на «слои» аспект raycasting, так как у вас будет «реальная» и «временная клон» версия ваших игровых объектов http : //docs.unity3d.com/Manual/LayerBasedCollision.html может быть хорошим началом для этого. – Lefty

+0

Уверен, это будет полезно! – Dinal24

Смежные вопросы