0
我正在使用Sprite Kit和Swift 2,目前我的節點位置設置爲遊戲中間某個特定位置時出現問題。例如,如果我點擊一個按鈕,我希望玩家的位置變成(50,50)。設置SpriteKit節點的位置(中游戲)
然而,當我嘗試使用
player.position = CGPointMake(50,50)
什麼也沒有發生。我已經看到人們說這是一個通過添加該行來修復的錯誤:
player.physicsBody = player.physicsBody
但是這對我沒有幫助。我也試着這樣做:
player.position.x = 50
player.position.y = 50
但是,這也無助:(
而且,這裏是玩家的decleration:就像我說的是正常移動
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向上移動其位置(我不是試圖做人工碰撞其實我有一個很好的理由移動它向上像這樣)。
任何想法? 謝謝!
你看到你的球員在所有,但你無法重新定位它(或者玩家是在場景中不可見)?此外,更多的上下文會有幫助(例如,玩家的父節點是什麼,玩家是否擁有物理身體,你如何移動等等) – Whirlwind
@Whirlwind yes對象是非常標準的,並且是場景的一個孩子。你可以看到它,它的行爲正常,但是當我試圖給它一個特定的位置時,它不會移動到那個位置。我也會將其聲明添加到該問題中。 – MarshallD
如果可能,你應該嘗試添加一個最小的例子,它可以重現你所說的...... – Whirlwind