利用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);
	
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值