#c# #unity3d #projectile
#c# #unity3d #снаряд
Вопрос:
Когда дробовик выпускает группу пуль, и, скажем, 1 или 20 пуль попадают в цель: как мне вызвать функцию только один раз за точный выстрел, а не один раз за столкновение пуль?
При использовании OnCollisionEnter для снаряда или для самой цели метод вызывается для каждого отдельного столкновения пуль.
Должен ли я использовать событие для этой проблемы? Как мне это сделать?
Редактировать: Ах, я забыл отредактировать это, как только понял это. Я думаю, что некоторые люди, возможно, неправильно поняли мою проблему.
Комментарии:
1. вы можете добавить ссылку на shutgun или любой другой игровой объект в сценарий pullet. или вы можете использовать события, делегаты, статические методы и т. Д. это ваш вызов.
Ответ №1:
Внутри OnCollisionEnter
find ContactPoint.points
.
Теперь вы можете использовать свой расчет точности здесь и выяснить, какой из них идеален.
Если идеально, то вызовите функцию, иначе нет.
Ответ №2:
Если кто-нибудь когда-нибудь наткнется на это, я сделал это, создав уникальный идентификатор для каждого выстрела из оружия и присвоив его каждому снаряду внутри этого выстрела. Тогда любой снаряд, который попадает в цель, будет проверять, вызвал ли этот уникальный идентификатор метод или нет. Таким образом, когда вы делаете 1 выстрел, в котором 20 снарядов, каждый снаряд, попавший в цель, нанесет урон цели, но отбросит ее только один раз, независимо от того, сколько снарядов попало.