Страница 1 из 1

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

СообщениеДобавлено: 31 мар 2016, 09:04
Flint
Есть плоскость по которой перемещается куб. В этой плоскости есть дыры. Нужно проверять на предмет этих дыр и не позволять кубу перемещаться туда.

Я пытаюсь сделать это через два 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)

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

СообщениеДобавлено: 31 мар 2016, 17:49
samana
Flint писал(а):Но что-то всё это криво работает.

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