Движение снаряда с использованием Box2d. - PullRequest
1 голос
/ 09 сентября 2011

Мне нужно знать, как использовать 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);

} 

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011

С box2D вам нужно будет только установить его начальное положение и начальную скорость (через applyForce).Box2d позаботится обо всем остальном, применяя силу тяжести, останавливаясь при ударе других объектов и т. Д.

1 голос
/ 07 декабря 2012
b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));

self.projectileBody->SetLinearVelocity(vector);
1 голос
/ 09 сентября 2011

На самом деле, вы можете напрямую настроить положение тела, позвонив по номеру:

body->SetTransform(vector,angle)
...