Проверка на обрыв

Форум для всего, что связано с ИИ.

Проверка на обрыв

Сообщение Flint 31 мар 2016, 09:04

Есть плоскость по которой перемещается куб. В этой плоскости есть дыры. Нужно проверять на предмет этих дыр и не позволять кубу перемещаться туда.

Я пытаюсь сделать это через два ray, подобный образом
Vector3 vecForward_point1 = transform.position + Vector3.up + transform.forward * 0.5f + Vector3.left * 0.3f;
Vector3 vecForward_point2 = transform.position + Vector3.up + transform.forward * 0.5f + Vector3.right * 0.3f;

Ray ray = new Ray(vecForward_point1, vec_down);
if (!Physics.Raycast(ray)){
rotate = Vector3.down;
}
Ray ray = new Ray(vecForward_point2, vec_down);
if (!Physics.Raycast(ray)){
rotate = Vector3.up;
}


Но что-то всё это криво работает. Как правильно решать в Unity это задачу ?

Если ход решения правильный, то как правильно сделать расстояние между лучами в зависимости от ширины объекта (Вместо Vector3.left * 0.3f)
Flint
UNец
 
Сообщения: 1
Зарегистрирован: 31 мар 2016, 08:40

Re: Проверка на обрыв

Сообщение samana 31 мар 2016, 17:49

Flint писал(а):Но что-то всё это криво работает.

А вообще ваши лучи на том месте, где вы задумали? Можно проверить с помощью Debug.DrawRay.
Если ваш куб крутиться, то возможно вам нужно брать вектора направления для луча, относительно самого трансформа куба, то-есть
Синтаксис:
Используется csharp
vec_down = transform.down;
vecForward_point1  = transform.position + transform.up + transform.forward * 0.5f  - transform.right * 0.3f;
Аватара пользователя
samana
Адепт
 
Сообщения: 4172
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск
  • Сайт


Вернуться в Искуственный Интеллект

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

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