利用Box2D实现子弹类型的精灵随弹道曲线旋转角度
这是2个月之前的开发,遇到的问题.当时用了2天时间得以解决。思考过程比较绕,但只要理解了原理 那么付诸于代码后,就变的so easy...
?
理解的核心就是要用一阶导数.
?
当你的物体(子弹,炮弹,各种物体...)被发射后,box2D会帮你模拟弹道曲线!这根本不用去想也不用你管!但你会发现刚体在空中时,其角度不会发生变化! 所以就变成了一个角度打出去,落地前绝不变化的情况!?
?
当时我自己用纯数学的计算,解决了问题。但当时刚接触Box2d 对其API不了解!最后才知道用其刚体属性的线速度即可替代我那之前几十行的数学算法!?? 不啰嗦了,刚体怎么发射出去的我就不管了! 在此只说明怎么改变刚体在空中时随曲线旋转,那么其依附在刚体上的精灵 也就自然旋转了!?
?
仔细看。。代码so easy?
?
这是被发射物体类内的 update 方法 自己刷新自己 自己改变角度 即可
?以下是objective-C代码 用的是Cocos2d框架
-(void) update:(ccTime) dt{//弹道旋转b2Vec2 vel = buBody->GetLinearVelocity();//buBody 代表子弹刚体对象float ang = atanf(vel.y / vel.x);buBody->SetTransform(buBody->GetPosition(),ang);}
?
?