Я нахожусь в процессе создания игры в стиле космических захватчиков и хотел бы сделать так, чтобы противник был трижды поражен, прежде чем взорваться.
Учебное пособие, которое я использую, показывает только, какзаставить врагов взрываться только после одного удара.В ней используется функция с именем didBegin(_ contact: SKPhysicsContact)
https://www.youtube.com/watch?v=F0kcw6eryJs&t=617s
Теперь эта функция, насколько я понимаю, оценивает каждый случай контакта, назначает двум телам две разные роли, а затем решает, чтоделать с каждым телом.Я предполагаю, что противник получит три удара, будет использоваться переменная, содержащая оставшееся у него здоровье.Затем, с каждым случаем контакта переменная будет уменьшаться на единицу, пока, если она не станет равной нулю, враг будет удален.
Однако в этом есть серьезная проблема.Поскольку didBegin(_ contact: SKPhysicsContact)
оценивает только один экземпляр контакта, он не знает о других предыдущих случаях контакта.По сути, когда враг получает удар, нет никакого способа узнать, был ли враг поражен ранее, не был ли он поражен вообще или был поражен слишком много раз.Если бы был только один враг, то я мог бы использовать одну переменную, чтобы отслеживать его здоровье.Однако это не так, поскольку на экране одновременно несколько врагов, и каждый раз, когда происходит контакт, невозможно узнать, был ли предыдущий удар по этому врагу или другому врагу.
Если на экране присутствует один враг, это просто, потому что при каждом контакте это должен быть один враг.Но если на экране есть несколько объектов, то нет никакого способа узнать, к какому врагу относится контакт.
Я считаю, что для этого потребуется определенная идентификация для каждого экземпляра врага, хотя я не уверенкак это сделатьДля тех из вас, кто читает, я очень благодарен за то, что зашел, и я очень благодарен, если вы можете помочь.