Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Unity 3d: перемещение в определённой области.

mr evo'x evo'x Ученик (108), на голосовании 4 года назад
Как сделать так чтобы обьект (им управляет игрок) мог перемещаться только в разрешённой области как в world of Tanks или Warships.
Голосование за лучший ответ
Андрей Иванов Профи (618) 4 года назад
Поставить коллизию на границе карты
Паша Блохин Ученик (171) 4 года назад
сделай скрипт с переменной обьекта игрока и два float, один приватный. Тот что публичный это время за которое надо вернуться обратно, так что решай сколько надо сам. Приватный float = публичному. И добавь войды если войдёт и если выйдет из тригера. Если выйдет то публичный флот -=time.Deltatime;. Если вернёться то публичный равен приватному. А если публичный флот равен меньше нули то пиши скрипт смерти игрока ( я просто хз какая у тебя смерть в игре)
Сергей Шиманский Мудрец (11399) 4 года назад
либо поставить коллайдеры не пускающие,
либо ограничить перемещение игрока как тут:
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");

Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rigidbody.velocity = movement * speed;

rigidbody.position = new Vector3
(
Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax),
0.0f,
Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax)
);

rigidbody.rotation = Quaternion.Euler (0.0f, 0.0f, rigidbody.velocity.x * -tilt);
}
Пользователь удален Мастер (1334) 4 года назад
либо поставить коллайдеры не пускающие,
либо ограничить перемещение игрока как тут:
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");

Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rigidbody.velocity = movement * speed;

rigidbody.position = new Vector3
(
Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax),
0.0f,
Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax)
);

rigidbody.rotation = Quaternion.Euler (0.0f, 0.0f, rigidbody.velocity.x * -tilt);
}
Похожие вопросы