2014-04-09 3 views
1

그래서 영웅이 화면의 가장자리와 충돌하는 대신 오른쪽 및 왼쪽 벽이 아래쪽 또는 위쪽이 아닌 충돌합니다.왼쪽 및 오른쪽 화면 가장자리 만있는 스프라이트 키트 충돌 감지

은 지금까지 나는이를 설정 한 내 -(id)initWithSize:(CGSize)size :

self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; 
    self.physicsBody.categoryBitMask = SceneEdgeCategory; 

내 영웅이 자신의 방법이있다 : 전체 화면이를 그대로

hero.physicsBody.collisionBitMask = SceneEdgeCategory; 

모두가 지금까지 잘 작동하지만, 물리학 자의 영웅이 모든 가장자리와 충돌합니다. 그를 벽에 그냥 닿게하는 방법은 없습니까? 도움말들에 대한

감사

답변

1

당신이 전체 화면 주위에 물리학 "상자"를 추가하고하고 있습니다. 당신이 찾고있는 것은 화면의 왼쪽과 오른쪽에있는 두 개의 벽입니다.

//make sure that you define the topLeftPoint, bottomLeftPoint, topRightPoint and bottomLeftPoint variables 

self.leftPhysicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:topLeftPoint toPoint:bottomLeftPoint]; 
self.leftPhysicsBody.categoryBitMask = SceneEdgeCategory; 

self.rightPhysicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:topRightPoint toPoint:bottomRightPoint]; 
self.rightPhysicsBody.categoryBitMask = SceneEdgeCategory; 
내 모습 방법
+0

leftPhysicsBody 및 rightPhysicsBody를 내 속성 목록에 추가하고 점의 정의와 함께 위의 내용을 내 initWithSize 메서드에 추가했지만 어떻게 든 작동하지 않습니다. 포인트가 올바르게 정의되어 있는지 확인했습니다. leftPhysicsBody/rightPhysicsBody를 설정하는 방법에 대해 알아야 할 특별한 것이 있습니까? – Vincent

+0

모든 점을 올바르게 정의 했습니까? 스프라이트 키트에서 사용하는 좌표계에 대한 [다음은 문서입니다 (https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Nodes/Nodes.html). 올바른 점은 0,0 (왼쪽 하단)이라고 생각합니다. 0,1 (왼쪽 위); 1,0 (오른쪽 아래) 및 1,1 (오른쪽 상단). – 68cherries

+0

-didBeginContact에서 연락처를 감지 할 수 있었습니까? 나는 몸과 화면 주위에 만든 가장자리 rect 사이의 접촉을 감지하려고하지만 단순히 작동하지 않습니다! –

0
CGPoint topRightPoint = CGPointMake(self.frame.size.width, self.frame.size.height); 

,하지만 난 검사가 잘 작동이 트릭을 할해야합니다. 나는 다음을 추가했다 : @property (nonatomic) SKPhysicsBody* leftPhysicsBody; @property (nonatomic) SKPhysicsBody* rightPhysicsBody; 그리고 나서 내 initWithSize 메소드에 위에서 나온 부분이있다. 어떻게 든 두 개의 physicbody를 내 장면에도 추가 할 수 있습니까? init과 alloc을 시도했지만 도움이되지 않았습니다.

관련 문제