在SpriteKit中,SKPhysicsBody是否可以创建一个物体,你可以从它的一侧穿过去但不能回头。这个想法是在一个方向上没有碰撞,所以你可以穿过并且不会返回,就像一个陷阱门。
我不太确定物理学的实现方式,但是在游戏运行时您应该能够更改物理主体的碰撞位掩码以达到类似的效果。
因此,当门检测到玩家接触它时,您可以将其设置为开启状态,并更改位掩码,以便玩家与之发生碰撞。这应该允许玩家单向通过,但不能返回。
*实际上,让门通过玩家的物理主体检测玩家何时不再接触门,并根据陷阱门或普通门的情况测试x或y位置。如果位置足够远离门,则更改门的碰撞位掩码,以使玩家无法通过。
func platformSolid() {
self.physicsBody?.collisionBitMask = kBIT_MASK_PLAYER | kBIT_MASK_WALL | kBIT_MASK_PLATFORM
}
func platformThrough() {
self.physicsBody?.collisionBitMask = kBIT_MASK_PLAYER | kBIT_MASK_WALL
}
func didEndContact(contact: SKPhysicsContact) {
if contact.bodyB.categoryBitMask == kBIT_MASK_PLATFORM {
player.platformSolid()
}
}