SKSpriteNode에 문제가 있습니다. 장면에서 특정 위치에 배치하면 위치가 매우 천천히 변하기 시작합니다. 이 문제는 SKPhysicsBody를 첨부 할 때만 발생하지만 관련이 없으면 발생하지 않습니다. 나는 위치 (256 타일을 배치 :배치 후 SKSpriteNode의 위치가 변경됩니다.
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)
}
예를 들어 다음은 객체를 배치 코드가
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)
}
}
:
여기에 배치되어 내 타일의 코드입니다 32) 곧 위치가 (255.990264892578, 31.9987831115723)로 변경되었으며 천천히 변화합니까? 나는 그것을 이해하지 못한다. 이 문제가 발생하는 이유는 무엇입니까?
움직임을 완전히 멈추지 만 충돌을 유지할 수있는 방법이 있습니까? 마찬가지로 나는 그 위치에서 움직이기를 원하지 않는다. –
collosion 후 속도를 0으로 설정할 수 있습니다. physicBody.speed –
문제는 self.sprite.physicsbody.dynamic을 false로 설정 했는데도 객체를 배치 할 때 객체가 여전히 약간 아래로 이동한다는 것입니다. 역동이 거짓 일 때 중력의 영향을받지 않아야합니다. –