У меня проблема с 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), и оно продолжает медленно меняться? Я этого не понимаю. Почему такое поведение происходит?
Есть ли способ полностью остановить движение, но сохранить столкновение? Как будто я не хочу двигаться с позиции. –
После collosion вы можете установить скорость до 0, physicBody.speed –
Проблема в том, что, хотя я установил false для объекта self.sprite.physicsbody.dynamic, объект все еще немного опускается, когда я его помещаю. Он не должен даже влиять на гравитацию, когда динамика ложна. –