【发布时间】:2014-07-18 17:46:15
【问题描述】:
我正在尝试让我的玩家跳跃。但是我不能让他在半空中跳跃,所以我需要在施加脉冲之前检查它是否站在另一个节点的顶部。
其他精灵套件游戏通常如何做到这一点?
现在我正在尝试两种方法,第一种就是这个。这很棒,但是我不知道如何判断玩家正在触摸的节点是真的在玩家的下方还是在玩家的一侧。
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
var allowJump = false
let bodies = player.physicsBody.allContactedBodies()
for body : AnyObject in bodies {
if let node = body.node {
allowJump = true // Player is touching another node but we don't know where (the bottom of the player or it's sides)
}
}
}
这是另一种方法,它可以有效地判断接触是否开始,以及接触是否真的与地面(玩家下方)而不是墙壁等接触。但是我不知道如何判断玩家何时停止在任何节点之上,因为即使联系结束,他可能仍在联系另一个节点。
func didBeginContact(contact: SKPhysicsContact!){
if(contact.bodyA.node.position.y < contact.contactPoint.y) {
println("BodyA is on top of another node")
}
if(contact.bodyB.node.position.y < contact.contactPoint.y) {
println("BodyB is on top of another node")
}
}
func didEndContact(contact: SKPhysicsContact!){
if(contact.bodyA.node.position.y < contact.contactPoint.y) {
println("BodyA is on no longer on top of BodyB")
}
if(contact.bodyB.node.position.y < contact.contactPoint.y) {
println("BodyB is no longer on top of BodyA")
}
}
【问题讨论】:
标签: ios swift sprite-kit