Cocos2d iphone 使用Box2d进行弹丸运动。
我需要知道如何使用box2d进行抛射运动 最初,ProjectleTime=0; 然后我调用下面的函数来计算抛射运动。它工作得很好。 但我想用box2d实现同样的目标。据我所知,Box2d只对力起作用,它不鼓励直接放置物体,所以如何使用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
-(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);