В моей игре игрок использует виртуальный аналог, чтобы нацелиться на конкретный объект, когда он отпускает аналог, персонаж должен двигаться к этому объекту. Я хочу сохранить положение этого объекта (больше похоже на направление, в котором игрок должен двигаться в зависимости от положения объекта) в переменной, но только в том случае, если это было последнее, с чем столкнулся луч:
Vector3 targetPos;
RaycastHit hit;
if (Physics.Raycast (pos, dir, out hit, 10, targetLayer)) {
Vector3 moveDir = (hit.point - transform.position).normalized;
targetPos = moveDir;
} else {
targetPos = Vector3.zero;
}
Таким образом, переменная targetPos
всегда возвращается к нулю после освобождения аналога, даже если последний столкнувшийся объект был этим конкретным объектом.
Изменить: решено на основе комментария @MukeshSaini. Спасибо всем.
if
? Вы можете подтвердить, сделавBreakPoint
и отладив. - person Hristo   schedule 19.05.2017targetPos
становилось равным нулю после отпускания аналога. @ Abdou023, не могли бы вы поделиться дополнительным кодом, я думаю, вы используете raycast даже после того, как пользователь выпустил аналог, который может возвращать false дляPhysics.Raycast
и устанавливатьtargetPos
наVector3.zero
в блокеelse
. - person Mukesh Saini   schedule 19.05.2017