Быстро перемещающийся объект, проходящий через другие объекты

Я новичок в Unity и делаю небольшой пример. На самом деле у меня есть куб, который перемещается со стрелками. Теперь у меня есть стены на дороге, и я хочу, чтобы моя цель ударилась о стену, но она прошла через стену.

Я также использовал этот код, но никакого результата:

http://www.unifycommunity.com/wiki/index.php?title=DontGoThroughThings

2 ответа

Общая идея состоит в том, чтобы отслеживать последнюю позицию вашего объекта (ов), а затем, когда они перемещаются, отбрасывает луч от текущей позиции до последней позиции. Проверьте луч для коллизий, и если они есть, вы ушли, хотя объект.

Если вы ушли другим объектом, установите текущий объект в позицию, сообщаемую столкновением. Следующий кадр вызовет события столкновения.

Указанная вами ссылка действительно делает это.


Если вы делали что-то вроде:

transform.velocity.x += speed * Time.deltaTime;

Это не будет работать с коллизиями, потому что вы на самом деле не сталкиваетесь ни с чем, вы просто телепортируетесь по фиксированной сумме каждого кадра. Это приводит к тому, что вы фактически телепортируете INSIDE объекта.

licensed under cc by-sa 3.0 with attribution.