作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Swift 和 SprieKit 中创建游戏。
我有 2 个节点,一个 BridgeNode 和一个 WaterNode。一个在另一个之上。
两者都有物理体来检测玩家何时在桥上或在水中。两个节点都作为场景的子节点独立添加。
当玩家节点跳到桥上时,DidBegin 检测到与水和桥节点。我只希望它在玩家安全地在桥上或玩家在水中时检测桥节点。
func didBegin(_ contact: SKPhysicsContact) {
// Did Begin Contact - Contact Testing and actions
let player1 = (contact.bodyA.categoryBitMask == player1Mask) ? contact.bodyA : contact.bodyB
let other = (player1 == contact.bodyA) ? contact.bodyB : contact.bodyA
if other.categoryBitMask == bridgeMask {
print("BRIDGE CONTACT")
}
else if other.categoryBitMask == waterMask {
// Contacted Water
print("WATER CONTACT")
}
}
控制台始终以随机顺序打印两个打印语句。
希望有人能帮我检测一个或另一个。
最佳答案
你提到这是一个自上而下的游戏,所以当你的桥在水上时,玩家显然会同时接触两者,没有“阻挡”桥下的 physicsBody。您需要在 SKPhysicsContactDelegate
中像这样做一些:
var playerIsOnBridge = false
func didBegin(_ contact: SKPhysicsContact) {
let player1 = (contact.bodyA.categoryBitMask == player1Mask) ? contact.bodyA : contact.bodyB
let other = (player1 == contact.bodyA) ? contact.bodyB : contact.bodyA
if other.categoryBitMask == bridgeMask || playerIsOnBridge {
playerIsOnBridge = true
print("BRIDGE CONTACT")
} else if other.categoryBitMask == waterMask {
print("WATER CONTACT")
}
}
func didEnd(_ contact: SKPhysicsContact) {
let bitmaskA = contact.bodyA.categoryBitMask
let bitmaskB = contact.bodyB.categoryBitMask
if bitmaskA == bridgeMask || bitmaskB == bridgeMask {
playerIsOnBridge = false
}
}
关于swift - 节点在另一个节点之上,都具有物理体,只想检测最顶部的物理体 - SpriteKit/Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42476763/
我目前在我的 master 分支上。我需要 CSS 方面的帮助,但不幸的是我的网站受身份验证保护。这使得其他人很难来我的站点进行调试。我计划开始一个新的分支,fixing_css,第一次提交删除所有身
我是一名优秀的程序员,十分优秀!