gpt4 book ai didi

swift - 使节点 'B' 和 'C' 仅与节点 'A' 发生冲突

转载 作者:行者123 更新时间:2023-11-28 12:40:13 27 4
gpt4 key购买 nike

为什么我们不能让 didBegin 函数只在 B C 与 A 碰撞时调用,而在 B 和 C 碰撞在一起时不调用?这是可能的还是我们总是需要检查是否有东西与 A 发生碰撞?

A.physicsBody!.collisionBitMask = 0
A.physicsBody!.contactTestBitMask = 1
A.physicsBody!.categoryBitMask = 1

B.physicsBody!.collisionBitMask = 0
B.physicsBody!.contactTestBitMask = 1
B.physicsBody!.categoryBitMask = 2

C.physicsBody!.collisionBitMask = 0
C.physicsBody!.contactTestBitMask = 1
C.physicsBody!.categoryBitMask = 3

Api 对 contactTestBitMask 说:一个掩码,它定义了哪些类型的物体会导致与该物理物体的交叉通知。

我们需要像 A.contactTestBitMask = 1 & 2 这样的东西

最佳答案

因为说 categoryBitMask 3 与说 categoryBitMask 1 AND categortyBitMask 2 是一样的。请参见单词 bitmask。这是他们的原因。这意味着您可以设置 32 个标志(或者您可以设置提供的 Int 中的每一位,但是您想要查看它)。

位掩码的有效唯一数字是 2 的幂,

1
2
4
8等

可以表示为

1 << 1
1 << 2
1 << 3
1 << 4

0b1
0b10
0b100
0b1000

无论您喜欢怎么写,该值都必须是 2 的幂。

因此将C的位掩码值改为4使其独立(或者将其设为2,因为B和C共享相同的碰撞属性,与A发生碰撞)

关于swift - 使节点 'B' 和 'C' 仅与节点 'A' 发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601644/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com