2014-11-07 3 views
2

풍선과 함께 게임을했습니다. 나는 풍선을 하단에서 추가하고 그들은 화면을 벗어날 수있는 동안 비행. 나는 풍선 물리학을 부여했습니다 .Bodys는 서로 충돌하지만 화면의 왼쪽과 오른쪽 가장자리의 풍선을 만들고 싶습니다. Sprite 객체가 Rays 사이트의 모든 화면에서 튀어 나오는 해결책을 발견했습니다. 그러나 나는 다른 해결책이 필요하다. 이 내 풍선 코드 :물리를 가진 스프라이트를 만드는 방법 충돌시 움직일 수 없거나 정적일까요?

MBDBallon *randomBallon = [[MBDBallon alloc] initWithImageName:balloonImageName 
               andBallonSize:ballonSize 
               withBallonImageName:[self.balloonColorImageNamesArray objectAtIndex:balloonWithColorIndex] 
               withStartingPosition:CGPointMake(self.viewSize.width/2, - self.viewSize.height)]; 

        //randomBallon.name = [self returnRandomImageNameFromArray:self.ballonSpriteImageNamesArray]; 
       randomBallon.physicsBody.usesPreciseCollisionDetection = YES; 
       randomBallon.physicsBody.categoryBitMask = balloonCategory; 
       randomBallon.physicsBody.collisionBitMask = balloonCategory; 
       randomBallon.physicsBody.contactTestBitMask = balloonCategory; 

이 내 왼쪽 벽 코드 :

SKSpriteNode *leftWall = [[SKSpriteNode alloc] initWithColor:[UIColor redColor] size:CGSizeMake(self.viewSize.width/15, self.viewSize.height * 3)]; 
    [leftWall setAnchorPoint:CGPointMake(0.0f, 0.0f)]; 

    leftWall.position = CGPointMake(self.viewSize.width/15 , 0.0f); 
    leftWall.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.viewSize.width/15, self.viewSize.height * 3)]; 
    leftWall.physicsBody.categoryBitMask = balloonCategory; 
    leftWall.physicsBody.collisionBitMask = balloonCategory; 
    leftWall.physicsBody.contactTestBitMask = balloonCategory; 
    leftWall.physicsBody.usesPreciseCollisionDetection = YES; 
    leftWall.physicsBody.allowsRotation  = NO; 
    leftWall.physicsBody.dynamic   = NO; 
    leftWall.physicsBody.friction = 0.0f; 
    [self addChild:leftWall]; 

벽이 일부 몇 풍선 충돌 후 이동하지만. 나는 그런 행동을 멈추기 위해 캐치 (catch) 나 재산을 정말로 모릅니다. :

leftWall.physicsBody.dynamic   = NO; 

모든 움직임을 중지해야하지만하지 말아야합니다. 도와주세요, 고마워. :).

답변

2

카테고리 BitMasks를 올바르게 설정하지 않았습니다.

randomBallon.physicsBody.categoryBitMask = balloonCategory; 
randomBallon.physicsBody.collisionBitMask = wallCategory|balloonCategory; 

leftWall.physicsBody.collisionBitMask = wallCategory; 
leftWall.physicsBody.contactTestBitMask = balloonCategory; 

카테고리 BitMask는 스프라이트에 할당하려는 카테고리입니다. CollisionBitMask는 스프라이트를 충돌시키려는 카테고리입니다. 이 경우 풍선은 벽 및 기타 풍선과 충돌하도록 설정해야합니다. 벽은 풍선과 만 충돌하도록 설정해야합니다.

+0

iOS 8.1 (기기) 및 iOS 8.1.7.1 시뮬레이터에서 작동합니다. 좋고 간단한 설명. 타이 :) –

관련 문제