我正在使用 Sprite Kit和Swift 2 ,目前我在设置我的节点位置到游戏中的特定位置时遇到问题。例如,如果我单击一个按钮,我希望玩家的位置变为(50,50)。
然而,当我尝试使用
时player.position = CGPointMake(50,50)
什么都没发生。我已经看到人们已经说过一个通过添加以下行修复的错误:
player.physicsBody = player.physicsBody
然而这对我没什么用。我也尝试过:
player.position.x = 50
player.position.y = 50
但这也没有做任何事:(。
这也是玩家的贬值:
var player = SKSpriteNode(imageNamed: "blue")
player.name = "player"
player.position = CGPoint(x: 50, y: 100)
addChild(player)
player.size = CGSize(width: ogSquareSize!, height: ogSquareSize!)
player.physicsBody = SKPhysicsBody(rectangleOfSize: player.size)
player.physicsBody?.dynamic = true
player.physicsBody?.usesPreciseCollisionDetection = true
player.physicsBody?.affectedByGravity = true;
player.physicsBody?.allowsRotation = true
player.physicsBody?.mass = 15;
就像我说它正常移动,我可以看到它,它通常与场景交互,但如果我试图直接改变它的位置,没有任何事情发生。
这是我尝试调用代码来改变其位置的地方:
func didBeginContact(contact: SKPhysicsContact) {
let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
switch(contactMask) {
case playerCategory | object2Category:
let player = childNodeWithName("player") as! SKSpriteNode
player.position.y += 100;
default:
return
}
}
基本上这里发生的事情是我告诉它如果它与另一个物体发生碰撞,它的位置会向上移动100(我不是试图进行人为碰撞我实际上有一个很好的理由将它向上移动)
有什么想法吗? 谢谢!
答案 0 :(得分:1)
使用
中的新位置填充全局变量didBeginContact
并改变
中的位置didSimulatePhysics