2014-03-01 5 views
0

여기 내 코드입니다 :SKSpriteNode anchorPoint를 이동 한 SKPhysicsBody의 잘못된 작업입니까?

// setting background 
_ground = [[SKSpriteNode alloc] 
         initWithColor:[SKColor greenColor] 
            size:CGSizeMake([Helpers landscapeScreenSize].width, 50)]; 
_ground.name = @"ground"; 
_ground.zPosition = 1; 
_ground.anchorPoint = CGPointMake(0, 0); 
_ground.position = CGPointMake(0, 0); 
_ground.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake([Helpers landscapeScreenSize].width, 50)]; 
_ground.physicsBody.dynamic = NO; 
_ground.physicsBody.affectedByGravity = NO; 
_ground.physicsBody.categoryBitMask = groundCategory; 
_ground.physicsBody.collisionBitMask = elementCategory; 
_ground.physicsBody.contactTestBitMask = elementCategory; 

녹색 사각형의 위치가 확인하지만, SKPhysicsBody 제대로이 사각형을 대표하지 않습니다. SKPhysicsBody가 스프라이트 위치 및 anchorPoint에 따라 본문을 "이동"하지 않는 것 같습니다. SKPhysicsBody는 _ground.width 포인트만큼 왼쪽으로 이동합니다.

내가 뭘 잘못하고 있니?

추신. 이 (코드)로 변경하면 내 문제가 해결되지만 실제로이 솔루션이 마음에 들지 않습니다. 요소를 배치하는 것은보기 흉한 방법입니다.

_ground.position = CGPointMake([Helpers landscapeScreenSize].width/2, 0); 

+ 제거 :

_ground.position = CGPointMake(0, 0); 
+0

흥미롭게도 iOS 8에서는 문제가되지 않습니다. – Scott

답변

1

어제 정확히 같은 문제를 가지고 있었다) 나를 위해 을 나는 SpriteKit하여 기본 스프라이트의 위치를 ​​사용하여이 문제를 해결했다. 방금 위치를 설정하고 앵커 포인트를 기본값으로 두십시오. 그런 다음 물리학자를 스프라이트의 크기로 설정합니다. 작동하는지

는 다음에 코드를 변경하고 확인

:

_ground = [[SKSpriteNode alloc] 
         initWithColor:[SKColor greenColor] 
            size:CGSizeMake([Helpers landscapeScreenSize].width, 50)]; 
_ground.position = CGPointMake([Helpers landscapeScreenSize].width/2, 0); 
_ground.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:_ground.size]; 

여전히이 함께 운이 없다면 당신은 또한 당신의 스프라이트 또 다른 초기화를 사용하려고 할 수 있습니다 (이 작품 내 계획). 텍스처와 그것을 시도 : 당신 (see here)에 대해 원하는 색상의 1x1 픽셀 이미지를 만들 수있는 방법

[[SKSpriteNode alloc] initWithTexture:[SKTexture textureWithCGImage:[UIImage imageWithColor:[UIColor whiteColor]].CGImage] color:[UIColor whiteColor] size:CGSizeMake(PLAYER_WIDTH, PLAYER_HEIGHT)]; 

는 (있는 UIImage *) imageWithColor을 구현하는 것을 잊지 마세요.

+0

작동하지만 문제는 아닙니다. 왜 anchorPoint를 (0,0)으로 이동하고 SKPhysicsBody를 추가하면이 SKPhysicsBody의 위치가 잘못 지정됩니까? – AndrewShmig

+0

SpriteKit에는 몇 가지 버그가 있다고 생각합니다. 또한 Physics의 위치와 관련하여 몇 가지 다른 문제가 발생했습니다. 노드의 크기 나 위치를 변경하면됩니다. –

+2

anchorPoint는 순전히 시각적 속성입니다. 텍스처가 노드 위치를 기준으로 그려지는 방식을 정의합니다. 그것은 시체에 영향을 미치지 않습니다. 이것은 버그가 아닙니다. – LearnCocos2D

관련 문제