【问题标题】:How to track multiple collisions between 2 sprites?如何跟踪 2 个精灵之间的多次碰撞?
【发布时间】: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


【解决方案1】:

想出了一个办法。如果您为精灵 A 分配分数并使用累积分数来跟踪分数,那么您可以使用“分数”作为碰撞计数器。因此,每次精灵 A 接触精灵 B 时,分数都会增加 10 分,然后简单地说 if score == 100 for example ... program something or if score == 150 ... program something (did begin method) and it works ,允许您在每个碰撞点与相同的精灵编程不同的动作或任何东西!惊人的。没想到它会起作用,但它确实起作用了:)

【讨论】:

  • 这很有趣。然后,您将如何使用 userData 使用 alpha 掩码进行准确跟踪?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多