我有一个联系人代表来检查玩家何时碰到屏障。当这个球员击打屏障,屏障的位置将被保存到使用联系人代表节点没有给出相同的位置
var movement : Movement
var collision : Int = 0
init(_ movement : Movement){
self.movement = movement
}
// Body B is the collision giver
// Body A is the contacted node
func didBegin(_ contact: SKPhysicsContact) {
collision += 1
let categories : (taker: UInt32, giver : UInt32) = (contact.bodyB.categoryBitMask, contact.bodyA.categoryBitMask)
if categories.giver == Category.Player && categories.taker == Category.Barrier {
movement.setBack.isOn = true
movement.setBack.barrierPosition = (contact.bodyB.node?.position)!
}
print("Barrier position x")
print(contact.bodyB.node?.position.x)
print("Collision number")
print(collision)
}
可变
然而,问题是我已经注意到,contact.bodyB.node?.POSITION给了我不同的值,即使屏障没有移动。由于每次的位置都不一样,所以它会抛弃所有其他类。我如何确保每次都能获得准确的价值?
编辑
增加了一些调试消息:
print("Barrier position x")
print(contact.bodyB.node?.position.x)
print("Collision number")
print(collision)
他们打印出来:
Barrier position x
Optional(156.24853515625)
Collision number
1
然后我再次碰撞
Barrier position x
Optional(151.248504638672)
Collision number
2
您遇到过什么样的位置差的?就像给我一个印刷位置和预期位置的例子。 – Pierce