Cocos2d iphone 使用Box2d进行弹丸运动。

Cocos2d iphone 使用Box2d进行弹丸运动。,cocos2d-iphone,box2d-iphone,Cocos2d Iphone,Box2d Iphone,我需要知道如何使用box2d进行抛射运动 最初,ProjectleTime=0; 然后我调用下面的函数来计算抛射运动。它工作得很好。 但我想用box2d实现同样的目标。据我所知,Box2d只对力起作用,它不鼓励直接放置物体,所以如何使用Box2d进行抛射运动 -(void)projectilelaunched:(ccTime)dt { projectileTime+=(5*dt); double vh=v*cos(theta); x=vh*projectileTim

我需要知道如何使用box2d进行抛射运动

最初,ProjectleTime=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);

} 

实际上,您可以通过调用以下命令直接设置身体的位置:

body->SetTransform(vector,angle)

实际上,您可以通过调用以下命令直接设置身体的位置:

body->SetTransform(vector,angle)

使用box2D,您只需设置其初始位置和初始速度(通过
applyForce
)。Box2d将负责其余部分,如施加重力、撞击其他物体时停止等。

使用Box2d,您只需设置其初始位置和初始速度(通过
applyForce
)。Box2d将处理其余部分,施加重力,撞击其他物体时停止等。

但这需要手动计算位置,这在你已经拥有物理模拟能力的情况下有点奇怪。但这需要手动计算位置,这是有点奇怪,当你已经在你的手物理模拟的力量。
b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));

self.projectileBody->SetLinearVelocity(vector);