box2d 力
引用:http://www.cocoachina.com/bbs/simple/?t29782.html
在box2d中用ApplyLinearImpulse发射出一枚非圆形炮弹,所面临的问题!
简单画了2个示意图.看图后再说明
图1:
图2:
我现在实现了图2的效果。我想一般人都能从这两个示意图中看出区别,以及我想要求助的目的
如果看图后就能帮我解决问题的大大们,就请不用看我下面的具体阐述了
我可能对box2d不太熟悉的原因,还有就是对相关物理学理解的不是很透彻,所以导致了一时没有思路
图2的实现我是这么做的。
1.取玩家操作的发射力度以及角度。
2.把角度值赋给炮弹的刚体的angle属性。 bodyDef.angle= CC_DEGREES_TO_RADIANS(角度值);
3.力度通过GetWorldVector转换 b2Vec2 f = bulletbody->GetWorldVector(b2Vec2(力度值, 0.0f));
4.取刚体质心点 b2Vec2 p = bulletbody->GetWorldCenter();
5.设置线性推力 bulletbody->ApplyLinearImpulse(f,p);
如果想实现伪图1效果 可以设置一下角速度 bulletbody->SetAngularVelocity(-1.5f);
但必定不真实,也不是正确的完成了所属意图.总体来说是错误的,我只想让发射出去的炮弹,能随”弹道“ 发生相应的角度变化(也许是质心变化?)
看了一些例子。发现都用了圆形炮弹或持续旋转的炮弹来避免的这个问题。但我想要实现的就是像 ”百战天虫“ 或PC网络游戏 "疯狂坦克" 中的炮弹角度随曲线的变化而变化
用相关的物理术语我也形容不出来。所以就傻乎乎的画了2张图 来表达我的意思。
+
问题解决了!还是用得box2d 但用了一阶导数的概念。最终绕回到box2d 用其线速度的属性,敲了3行代码 完美解决!