Почему Unity игнорирует BoxCollider2D и CircleCollder2D? [дубликат]

104
11 октября 2019, 15:30

На данный вопрос уже ответили:

  • Правильная реализация передвижения персонажа 1 ответ

В скриптах, которые висят на этих объектах нет элементов влияющих на BoxCollider2D и CircleCollider2D, перемещение осуществляется с помощью transform.position += x;, где x некоторый Vector3 элемент (поскольку для подобного рода игры адекватные способы перемещения через veliocity или AddForce() не придумал). Почему Турель с CircleCollidet2D на TurrelAim игнорирует коллизию с BoxCollider2D на Pawuk?

Answer 1

Давайте рассуждать логически. Как, по-вашему, физический движок поймёт, с чем столкнулся объект, если вы используете transform.position += x;?

Скажем:

                        стена 1              стена 2
                          |                    |
старая_позиция_объекта    |                    |           новая_позиция_объекта
                          |                    |

Если вы явно поменяли координаты, то что Unity должен решить? Столкнулись ли вы со стеной 1? Или со стеной 2? Или с обеими? Или ни с одной?

Если вы хотите, чтоб коллизии нормально обрабатывались, то меняйте позицию объектов, прикладывая силу, e.g. rigidbody.velocity = x или rigidbody.MovePosition.

READ ALSO
Как создать полет слегка отклоненный от цели выстрел из оружия AI от его цели

Как создать полет слегка отклоненный от цели выстрел из оружия AI от его цели

Полет пули к цели с практически одинаковой скоростью осуществляется с помощью данного скрипта:

138
Как переключать состояние в методе C# .NET

Как переключать состояние в методе C# .NET

Реализую простой фасад для сокрытия более низкоуровневых решенийЕсть модель данных:

118
Не работает асинхронный вызов метода C#

Не работает асинхронный вызов метода C#

Имеется метод, который внутри себя запускает дважды другой метод, но второй раз асинхронноИ вот внутри Task не срабатывает SaveToDB()

141
накопление вызовов корутин

накопление вызовов корутин

Есть такая реализация: переходы три перехода между играми, когда мы перешли, срабатывает некий метод с корутиной в 3 секунды, но если очень...

118