我遇到了SKSpriteNode的問題。在我將它放置在某個位置的場景中後,它的位置開始變得非常緩慢。這隻發生在我將SKPhysicsBody附加到它上面時,但不是沒有它,所以它與此有關。SKSpriteNode的位置在放置後發生變化
這裏是放在我的瓷磚代碼:
import Foundation
import SpriteKit
class Tile : SKNode {
var sprite = SKSpriteNode(imageNamed: "grassMid")
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented");
}
override init() {
super.init();
self.sprite.physicsBody = SKPhysicsBody(texture: self.sprite.texture!, size: CGSize(width: 32.0, height: 32.0))
self.sprite.physicsBody?.dynamic = false
self.sprite.physicsBody?.collisionBitMask = 0x0
self.addChild(sprite)
}
}
這裏是放置對象的代碼:
func addNewTile(position: CGPoint) {
let t = Tile()
t.sprite.position = getClosestPointInGrid(position)
t.sprite.size = CGSize(width: 32.0, height: 32.0)
if(!doesPositionContainTile(t.sprite.position)) {
self.addChild(t)
}
print(t.sprite.position)
}
例如:我把瓷磚的位置(256, 32),並且很快該位置變爲(255.990264892578,31.9987831115723),並且它變化緩慢?我不明白。爲什麼會發生這種行爲?
有什麼辦法可以完全阻止運動但保持碰撞?就像我不想從這個位置移動。 –
在爆炸之後,您可以將速度設置爲0,physicBody.speed –
問題是,即使我已將self.sprite.physicsbody.dynamic設置爲false,但在放置對象時仍會向下移動一些對象。動態錯誤時甚至不應受重力的影響。 –