在Swift和SprieKit中创建游戏 .
我有2个节点,一个BridgeNode和WaterNode . 一个在另一个之上 .
两者都有物理机构来检测玩家何时在水中的桥上 . 两个节点都独立添加为场景的子节点 .
当玩家节点跳转到Bridge时,DidBegin会检测到与Water和Bridge节点的联系 . 我只希望它能够检测到Bridge节点,因为玩家安全地在桥上或者玩家在水中 .
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")
}
}
控制台始终以随机顺序打印两个打印语句 .
希望有人可以帮我检测一个或另一个 .
1 回答
你提到它是一个自上而下的游戏,所以当你在水面上有一座桥时,玩家显然会同时联系两者,桥下面没有物理体的"blocking" . 您需要在_1458661中执行以下操作: