2014-10-16 3 views
1

저는 SpriteKit에서 새로운 기능을하고 있으며 물리학적인 문제를 겪고 있습니다. SKSpriteNode를 힘 또는 충격으로 움직이려면 많은 노력을 기울였습니다. 절대 움직이지 않고, 중력 만이 그것을 설정할 때 영향을 미칩니다. 여기iOS - SpriteKit : SKIPriteNode에서 ApplyImpulse가 작동하지 않습니다.

-(id)initWithSize:(CGSize)size { 
    if (self = [super initWithSize:size]) { 

     self.anchorPoint = CGPointMake(0.5, 0.5); 
     myWorld = [SKNode node]; 
     [self addChild:myWorld]; 

     SKSpriteNode* map = [SKSpriteNode spriteNodeWithImageNamed:@"grass"]; 
     [myWorld addChild:map]; 

     self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:map.frame]; 
     self.physicsBody.friction = 0.0f; 
     self.physicsBody.categoryBitMask = 2; 
     self.physicsWorld.gravity = CGVectorMake(0.0, 0.0); 
     self.physicsWorld.contactDelegate = self; 

     pointOfView = [SKSpriteNode spriteNodeWithColor:[UIColor colorWithWhite:1 alpha:0.2] size:CGSizeMake(300, 548)]; 
     [myWorld addChild:pointOfView]; 

     pointOfView.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:pointOfView.frame.size]; 
     pointOfView.physicsBody.friction = 0.0f; 
     pointOfView.physicsBody.restitution = 1.0f; 
     pointOfView.physicsBody.linearDamping = 0.0f; 
     pointOfView.physicsBody.allowsRotation = NO; 
     pointOfView.physicsBody.collisionBitMask = 2; 
     pointOfView.physicsBody.categoryBitMask = 3; 
     [pointOfView.physicsBody applyImpulse:CGVectorMake(10.0f, -10.0f)]; 
    } 
    return self; 
} 

가 다른 아무것도 .. 업데이트 나 touchesBegan 같은 일부 비어있는 방법을 제외하고는 없습니다 내가 뭔가를 놓치고, 내 주요 장면에서 내 코드의 대부분을인가? 나는 많은 것을 시도했다, 나는 그것을 잃어 버리기 시작했다. 하하

어떤 도움이라도 대단히 감사합니다!

+0

잘못된 코드를 작성했습니다. pointOfView는 중력에 영향을받지 않습니다. 단지 작은 불투명도를 적용하는 것입니다. – dragoneye

답변

-1

중력에 영향을받지 않는 pointOfView 코드를 잘못 작성했습니다. 작은 불투명도가 적용됩니다.

이 줄을 self.physicsWorld.gravity = CGVectorMake (0.0, 0.0)에서 self.physicsWorld.gravity = CGVectorMake (0.0, -9.8)로 변경하십시오. 아래 방향으로 양의 중력을 찾고 있다면 위 방향과 CGVectorMake (0.0, 9.8)쪽으로 음의 중력을 찾고 있습니다. 간격 후에 충동을 적용하려고합니다. [pointOfView.physicsBody applyImpulse : CGVectorMake (10.0f, -10.0f)];

+0

불행히도, 나는 내 노드에 중력을 적용하려고하지 않습니다. 반대로 이미 시도해 보았습니다. 작동하지 않습니다. 당신이 말하고있는이 작은 퉁명스러운 점은 작동하지 않습니다. 노드가 전혀 움직이지 않습니다. – user3198930

0
pointOfView.physicsBody.dynamic = YES; 

동적 속성은 스프라이트가 물리력에 의해 영향을 받아야하는지 여부를 결정합니다.

+0

나는 이것을 시도했지만 작동하지 않는다. :(( ) 공식 문서에 따르면,이 속성은 기본적으로 Yes로 설정되어있다. No로 설정할 필요가 없으므로 필요하지 않아야한다. 그것을 지정하십시오 .. – user3198930

0

그것은 조금 늦게, 그러나 대답은 여기에 있습니다 : Not able to apply impulse to SKSpriteNode physics body

문제는 당신이 bodyWithEdgeLoopFromRect와 물리학 몸을 만든 것입니다; 이것은 applyImpulse에 응답하지 않는 정적 물리학 체를 만듭니다. 대신 bodyWithRectangleOfSize :를 사용하여 물리 본문을 추가해야합니다.

관련 문제