2013-10-16 2 views
3

다음과 같은 코드를 사용하여 직사각형 브릭과 그에 연결된 피직스 바디를 생성합니다. 저는 물리학 시체가 벽돌의 크기와 위치와 동일한 크기와 위치의 견고한 직사각형이 될 것으로 기대했지만 시체 오프셋과 아마도 크기 차이가 있다고 생각하는 몸체를 얻었습니다. 내가 놓친 좌표계에 문제가 있습니까? 이것을 접근하는 올바른 방법은 무엇입니까?SKPhysicsBody가 예상대로 작동하지 않습니다.

- (void)addBrick { 
    SKShapeNode *brick = [[SKShapeNode alloc] init]; 

    CGRect brickBoundary = CGRectMake(0.0, 0.0, 100.0, 100.0); 
    brick.position = CGPointMake(100.0, 100.0); 
    brick.path = CGPathCreateWithRect(brickBoundary, nil); 

    brick.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(100.0,100.0)]; 
    brick.physicsBody.restitution = 1.0; 
    brick.physicsBody.friction = 0.0; 
    brick.physicsBody.dynamic = NO; 

    [self addChild:brick]; 
} 
+0

크기가 frame.size의 절반이어야 아닌 전체 폭 – LearnCocos2D

답변

5

이것은 쉽게 rect을 만들고 물리학 자 본문을 추가하는 쉬운 방법입니다. 여기

SKSpriteNode *n1 = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:objectSize]; 
n1.position = CGPointMake(self.size.width/2, 200); 
n1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:n1.size]; 
n1.physicsBody.dynamic = NO; 
[self addChild:n1]; 

는 수정

// RW Debug modified version 
CGPathRef bodyPath = CGPathCreateWithRect(CGRectMake(-n1.size.width/2, -n1.size.height/2, n1.size.width, n1.size.height),nil); 
SKShapeNode *shape = [SKShapeNode node]; 
shape.path = bodyPath; 
shape.strokeColor = [SKColor colorWithRed:1.0 green:0 blue:0 alpha:0.5]; 
shape.lineWidth = 1.0; 
[n1 addChild:shape]; 
CGPathRelease(bodyPath); 

당신 구현 사각형 디버그와에도 불구을 제공하는 RW 튜토리얼 버전이 (물리학 상자 인 빨간색)를 생산한다. 몸 사각형의 크기가 양쪽에 중심에서 너비/높이이기 때문에

enter image description here

+0

감사합니다, 그것은 :)했다. 하지만 제 구현에서 어디에 문제가 있는지 알고 있습니까? – Roshan

+1

이것은 구현을 수정합니다. CGRect brickBoundary = CGRectMake (-50, -50, 100.0, 100.0); spriteNodes에는 앵커 포인트가 없어서 0,0으로 설정 되었기 때문에 가정합니다. 나는 완전히 미안하다. – DogCoffee

+0

그래, 문제는 앵커 포인트와 너무 같아요 ... 고마워 :) – Roshan

관련 문제