碰撞检测导致颜色检测? [复制]
Posted
技术标签:
【中文标题】碰撞检测导致颜色检测? [复制]【英文标题】:Collision detection leading to color detection? [duplicate] 【发布时间】:2016-06-16 03:37:28 【问题描述】:我如何检查,当我在两个矩形中间与一个 SKSpriteNode 碰撞时,球和两个矩形的颜色是否相同?
例如,如果我的两个矩形是红色的,而我的球是蓝色的,我希望它检测到我的矩形和球的颜色不同。如果它们是相同的颜色,那么我不希望发生任何事情。如果不是,我将编写让玩家输的代码。但是,当球碰撞位于中间和两个矩形之间的skspritenode时,如何检测颜色差异?
【问题讨论】:
【参考方案1】:我的建议是你将你的“一对”墙改为三面墙。这第三面墙应该有一个不同的 categoryBitMask。 (PhysicsCategory.wallSpace
似乎符合您当前的命名方案。)
这个“wallSpace”需要放置在两个现有墙之间。应该通过你的颜色更改逻辑赋予它与它的兄弟相同的颜色相同,但这里有诀窍:将它的 alpha 设置为 0。
通过这种方式,您可以检查这面无形墙和您的球之间的碰撞,并根据颜色信息执行操作。
【讨论】:
这就像手里拿着一本书,只是我看不懂。如果你想帮助我,你将不得不一步一步地引导我完成所有这些。很抱歉造成如此麻烦。 Stack 并不是完整教程的舞台。我不知道如何解释这一点以便您理解:您将一个精灵放在两个彩色墙之间并检查球何时接触这个(新)精灵。 等等,所以你希望我的 Sprite 与它之间的墙壁颜色相同,使用与我的球相同的颜色随机化代码,然后检查球和 Sprite 是否是一样的颜色? 是的,这一直是一般的想法,不是吗?在我上面的回答中,我还建议添加第三面具有相同科罗拉多州但其 alpha 设置为 0 的墙。这样可以更容易地确定球何时通过 可见 墙。 因为我很懒,所以我就是这样做的。我复制了检测到我的球是否撞到墙上的节点。但是我改变了categorybitmask,所以它不会和我的球发生碰撞。就像这样:如果(颜色检测我无法弄清楚,但如果墙壁与球的颜色相同)然后使用不与任何东西碰撞的类别位掩码。否则将 categorybitmask 设置为 wall。所以它对待不同颜色的碰撞就像对待墙壁一样。这很好。如果我知道如何构造一个 if 语句,该语句可以准确地将墙和球的颜色识别为游戏中的变化。以上是关于碰撞检测导致颜色检测? [复制]的主要内容,如果未能解决你的问题,请参考以下文章