2011-09-09 4 views
1

나는 발사체 모션을 위해 box2d를 사용하는 법을 알아야합니다.Box2d를 사용한 발사체의 움직임.

처음에는 projectileTime = 0; 다음 나는 발사 모션에 대해 다음 함수를 호출합니다. 그것은 꽤 잘 작동합니다. 하지만 box2d를 사용하여 같은 결과를 얻고 싶습니다. 내가 아는 한 Box2d는 힘으로 만 작동하지만, 직접 물건을 올려 놓는 것을 권장하지 않습니다. 그래서 Box2d를 발사체 이동에 어떻게 사용합니까 ??

-(void)projectilelaunched:(ccTime)dt 
{ 
    projectileTime+=(5*dt); 

    double vh=v*cos(theta); 

    x=vh*projectileTime; 

    double y = x*tan(theta)- 10*((x/vh)*(x/vh))/2; 

    projectile.position=ccp(projectilePositionBeforeLaunched.x + x,projectilePositionBeforeLaunched.y+y); 

} 

답변

2

, 만 (applyForce를 통해) 초기 위치와 초기 속도를 설정해야 할 것입니다. Box2D의 등

1

사실, 직접 호출하여 몸의 위치를 ​​설정할 수 있습니다

Box2D의와
body->SetTransform(vector,angle) 
+1

다른 개체를 치는하지만 수동으로 당신은 이미 당신의 손에 물리 시뮬레이션의 힘이있을 때 좀 이상한 위치를 계산이 필요한 경우 정지, 중력을 적용, 나머지를 다룰 것이다. – Lukman

+0

@ gixdev, 귀하의 답변도 도움이됩니다. 감사합니다. – russell

1
b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle)); 

self.projectileBody->SetLinearVelocity(vector); 
관련 문제