Когда хотя бы один снаряд из группы попадает в цель, как вызвать функцию только один раз для каждой группы?

#c# #unity3d #projectile

#c# #unity3d #снаряд

Вопрос:

Когда дробовик выпускает группу пуль, и, скажем, 1 или 20 пуль попадают в цель: как мне вызвать функцию только один раз за точный выстрел, а не один раз за столкновение пуль?

При использовании OnCollisionEnter для снаряда или для самой цели метод вызывается для каждого отдельного столкновения пуль.

Должен ли я использовать событие для этой проблемы? Как мне это сделать?

Редактировать: Ах, я забыл отредактировать это, как только понял это. Я думаю, что некоторые люди, возможно, неправильно поняли мою проблему.

Комментарии:

1. вы можете добавить ссылку на shutgun или любой другой игровой объект в сценарий pullet. или вы можете использовать события, делегаты, статические методы и т. Д. это ваш вызов.

Ответ №1:

Внутри OnCollisionEnter find ContactPoint.points .

Теперь вы можете использовать свой расчет точности здесь и выяснить, какой из них идеален.

Если идеально, то вызовите функцию, иначе нет.

Ответ №2:

Если кто-нибудь когда-нибудь наткнется на это, я сделал это, создав уникальный идентификатор для каждого выстрела из оружия и присвоив его каждому снаряду внутри этого выстрела. Тогда любой снаряд, который попадает в цель, будет проверять, вызвал ли этот уникальный идентификатор метод или нет. Таким образом, когда вы делаете 1 выстрел, в котором 20 снарядов, каждый снаряд, попавший в цель, нанесет урон цели, но отбросит ее только один раз, независимо от того, сколько снарядов попало.