ios - 当两个机构不联系时如何接收通知?
<p><p>在 <code>DidBeginContact</code> 我喜欢在两个机构不联系时收到通知。 </p>
<p>我尝试使用 <code>!(NOT)</code> 运算符,但它不起作用。 </p>
<pre><code>if (!(firstBody.categoryBitMask == kBrickCategory && secondBody.categoryBitMask == kCarCategory)) {
NSLog(@"Hit");
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p><code>didBeginContact</code> 仅在发生碰撞时调用。您将 <code>update</code> 中的 <code>Bool</code> 设置为 <code>false</code> 并在 <code>didBeginContact</code> 中将其设置为 <code>true</code> if发生了碰撞。在 <code>didFinishUpdate</code> 中检查并采取相应措施。</p>
<p>示例代码使用 Swift,但应该很容易转换为 Objective-C。</p>
<pre><code>class MyScene: SKScene, SKPhysicsContactDelegate {
var contactMadeThisFrame = false
override func update(currentTime: NSTimeInterval) {
contactMadeThisFrame = false
}
func didBeginContact(contact: SKPhysicsContact) {
let firstBody = contact.bodyA
let secondBody = contact.bodyB
if firstBody.categoryBitMask == kBrickCategory && secondBody.categoryBitMask == kCarCategory {
contactMadeThisFrame = true
}
}
override func didFinishUpdate() {
if !contactMadeThisFrame {
print("Hit")
}
}
}
</code></pre>
<p>如果您想逐个节点检查(仅对未联系的节点执行操作),那么您可以遍历主体并检查 <code>physicsBody.allContactedBodies</code> 计数是否为零。在 <code>didFinishUpdate</code> 中执行此操作。</p></p>
<p style="font-size: 20px;">关于ios - 当两个机构不联系时如何接收通知?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/36049398/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/36049398/
</a>
</p>
页:
[1]