2014-04-22 2 views
0

장면은 다음과 같습니다. 플레이어 한 명과 상자 한 명, 상자에 플레이어가 있습니다. 화면에서 오른쪽으로 스 와이프하면 플레이어가 오른쪽으로 움직입니다. 그가 상자의 오른쪽 가장자리에 도달하면 상자를 오른쪽으로 밀 것이다. 다른 SKPhysicsBody 개체에서 SKPhysicsBody 개체를 구현하려면 어떻게해야합니까?

그래서 저는 두 SKNode

CGRect box = CGRectMake(110, 270, 100, 100); 
    SKShapeNode *shapeNode = [[SKShapeNode alloc] init]; 
    shapeNode.path = [UIBezierPath bezierPathWithRect:box].CGPath; 
    shapeNode.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:shapeNode.path]; 
    shapeNode.physicsBody.dynamic = NO; 
    shapeNode.physicsBody.categoryBitMask = kbox; 
    shapeNode.physicsBody.collisionBitMask = 1; 
    shapeNode.physicsBody.contactTestBitMask = kplayer; 
    [self addChild:shapeNode]; 

    SKSpriteNode *player = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(10, 30)]; 
    player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:player.size]; 
    player.physicsBody.categoryBitMask = kplayer; 
    player.physicsBody.collisionBitMask = 1; 
    player.physicsBody.contactTestBitMask = kbox; 
    player.position = CGPointMake(self.size.width/2, self.size.height/2); 
    [self addChild:player]; 

위의 초기 코드가 작동하지 않았다가의 shapeNode 플레이어와 충돌 할 수없는 디자인. 어떻게 다른 SKPhysicsBody 개체에서 SKPhysicsBody 개체를 구현할 수 있습니까? 내 생각을 어떻게 구현할 수 있습니까? 고마워요!

+0

'shapeNode.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect : box];' – ZeMoon

+0

@akashg 사용해보기 시도했지만 작동하지 않습니다. – jseanj

답변

0

상자의 (in)쪽에 자식 노드를 추가하고 플레이어 내부 노드와의 접촉을 확인할 수 있습니다. 연락이 이루어지면 연락처가 등록되어있는 동안 부모 (상자)를 수동으로 이동하십시오. box.position = CGPointMake(box.position.x, box.position.y+1);과 같이 상자를 이동할 수 있습니다. 이것은 update: 메소드에서 수행됩니다.

관련 문제