【发布时间】:2018-11-15 18:18:50
【问题描述】:
我正在制作一款太空侵略者风格的游戏,并且想要制作一个敌人必须被击中三下才能爆炸。
我使用的教程只展示了如何让敌人一击就爆炸。它使用了一个名为didBegin(_ contact: SKPhysicsContact)的函数
https://www.youtube.com/watch?v=F0kcw6eryJs&t=617s
现在,据我了解,这个函数会评估每个接触实例,为两个身体分配两个不同的角色,然后决定如何处理每个身体。我假设让一个敌人受到三击,将使用一个包含他们剩余生命值的变量。然后,每次接触,变量都会减一,直到为零,敌人被移除。
然而,这里面有一个深层次的问题。由于didBegin(_ contact: SKPhysicsContact) 只评估一个联系实例,它不知道其他先前的联系实例。本质上,当一个敌人被击中时,没有办法知道敌人是以前被击中过、根本没有被击中过还是被击中了太多次。如果只有一个敌人,那么我可以使用一个变量来跟踪它的健康状况。然而,情况并非如此,因为屏幕上同时有多个敌人,并且每次接触时,都无法知道上一次击中的是这个敌人还是另一个敌人。
如果屏幕上有一个敌人,这很简单,因为每次接触都必须是那个敌人。但如果屏幕上有多个实体,则无法知道接触适用于哪个敌人。
我相信这需要对每个敌人实例进行某种识别,尽管我不确定如何做到这一点。对于那些阅读的人,我非常感谢您的光临,如果您能提供帮助,我将非常感激。
【问题讨论】:
标签: swift sprite-kit game-physics