【发布时间】:2018-06-20 03:49:54
【问题描述】:
这里是一个例子,只是为了便于理解:
Sprite A 是一个球。 Sprite B 是一个立方体。当球接触立方体一次时,我希望标签说第一次接触。当同一个球再次接触同一个立方体时,我希望标签说第二次接触。当同一个球,再次接触同一个立方体时,我想让标签说第三次接触。
我该如何做到这一点?
在我看来,Sprite 套件似乎只允许编写精灵之间的 1 次碰撞碰撞,这是非常有限的。特别是,因为我想创建一个敌人,它实际上会根据从玩家那里接收到的命中量来改变行为,而不仅仅是每次碰撞都采取相同的动作。
【问题讨论】:
-
你的问题甚至没有意义,你想要两个精灵在游戏过程中相互接触的次数,而不是多次接触。您要求保存记录,这不应该是 API 所期望的。
-
好吧,Knight,不介意我叫你Knight,对吗:)。确实是有道理的,因为我想根据联系号码来区分敌人的行为。我已经使用计分器解决了这个问题(请参阅下面的答案),并将其用于玩家健康和敌人健康。因此,一旦我用我的武器与敌人接触了 10 次,他的生命值就会耗尽并被从现场移除。一旦敌人在我的船上(玩家)接触了他的武器 3 次,我的船就死亡并被移除并结束游戏。所以它根本不是一种跟踪机制,它是一种实用的条件代码方式。
-
不,您要求图形 API 进行记录保存,这是没有意义的部分。这就像让艺术家数一数进入他的工作室的人数。他能做到吗?也许。是他的工作吗?不。如果你真的要求他这样做,他是否会给你一个困惑的表情并且不明白?绝对的。
-
好吧,Knight,如果 API 无法计算 2 个 sprite 接触的次数,它肯定是非常有限的。就像两个人见面,然后你对你的朋友说,“哦,是的,我见过迈克几次,大约 3 次。”这对人类来说真的不难,所以对于 API 来说一定非常容易。此外,程序员知道这一点很有用,因此他们可以根据两个精灵之间的接触或碰撞编写条件代码。它可以以许多创造性的方式应用,例如玩家和敌人的生命值以及速度等其他变量,想想吧,骑士,你会吗。
-
不,你的比喻全错了。这些工具可以很容易地做记录,你只是不知道如何使用它们,从而抓错了。当您真正需要锤子时,您正在使用扳手。当然你可以用扳手敲钉子,但你会更加努力,可能会弄坏扳手,板子,伤到自己。
标签: sprite-kit sprite collision-detection collision bit-masks