SKSpriteNode를 그릴 때마다 그려야 할 위치보다 더 낮게 그려집니다. 하지만 다른 SKSpriteNode가 문제없이 잘 작동하는 것 같습니다.스프라이트 키트 - 잘못된 위치에 그려지는 SKSpriteNode
이 내 현재 코드입니다 : 폭탄이 지상 거의 직접적으로 가정하고 있지만
func initMainGround() {
let gSize = CGSizeMake(self.size.width/4*3, 120);
ground = SKSpriteNode(color: SKColor.brownColor(), size: gSize);
ground.name = gName;
ground.position = CGPointMake(0, 0);
ground.physicsBody = SKPhysicsBody(rectangleOfSize: ground.size);
ground.physicsBody.restitution = 0.0;
ground.physicsBody.friction = 0.0;
ground.physicsBody.angularDamping = 0.0;
ground.physicsBody.linearDamping = 0.0;
ground.physicsBody.allowsRotation = false;
ground.physicsBody.usesPreciseCollisionDetection = true; //accurate collision
ground.physicsBody.affectedByGravity = false;
ground.physicsBody.dynamic = false;
ground.physicsBody.categoryBitMask = gBitmask;
ground.physicsBody.collisionBitMask = pBitmask;
self.addChild(ground);
}
func addBomb() {
let bomb = SKSpriteNode(imageNamed: "trap");
bomb.size = CGSizeMake(30, 30);
bomb.position = CGPointMake(ground.position.x, actualY+10);
bomb.physicsBody = SKPhysicsBody(circleOfRadius: bomb.size.width/2);
bomb.physicsBody.restitution = 0.0;
bomb.physicsBody.allowsRotation = false;
bomb.physicsBody.usesPreciseCollisionDetection = true;
bomb.physicsBody.affectedByGravity = false;
bomb.physicsBody.dynamic = false;
bomb.physicsBody.categoryBitMask = bBitmask;
bomb.physicsBody.collisionBitMask = pBitmask;
bomb.physicsBody.contactTestBitMask = pBitmask;
self.addChild(bomb);
}
하지만 폭탄 대신 거의 100 + 지상 것 같다.
게임이 가로 방향이므로 바닥이 화면 높이의 거의 1/3을 채우고 있지만 정상보다 낮습니다.
왜 땅이 엉뚱한 위치에 그려지지만 폭탄이 정확한 위치에 그려 집니까?
.sks 파일 크기를 필요한 실제 크기로 이미 변경했습니다. self.size.width 또한 올바른 너비를 반환합니다. 그래서'self.size = view.bounds.size'는 정말로 여기에 도움이되지 않았습니다 – junyi00
이것은 대단한 답변입니다. 나는 위치에 대한 백분율을 기반으로 전체 앱을 계획 했으므로 벽에 머리를 두드렸다. – Mike
감사합니다. 내 문제도 정리했습니다. –