zoukankan      html  css  js  c++  java
  • box2d 力

    引用:http://www.cocoachina.com/bbs/simple/?t29782.html

    在box2d中用ApplyLinearImpulse发射出一枚非圆形炮弹,所面临的问题!

    简单画了2个示意图.看图后再说明


    图1:




    图2:





    我现在实现了图2的效果。我想一般人都能从这两个示意图中看出区别,以及我想要求助的目的


    如果看图后就能帮我解决问题的大大们,就请不用看我下面的具体阐述了








    我可能对box2d不太熟悉的原因,还有就是对相关物理学理解的不是很透彻,所以导致了一时没有思路


    图2的实现我是这么做的。


    1.取玩家操作的发射力度以及角度。


    2.把角度值赋给炮弹的刚体的angle属性。    bodyDef.angleCC_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行代码 完美解决!

  • 相关阅读:
    面向对象与原型2---原型
    JavaScript 引用【转】
    面向对象与原型1---创建对象的方法
    匿名函数和闭包(下)
    从输入 URL 到页面加载完的过程中都发生了什么事情?
    匿名函数和闭包(上)
    聚美优品前端开发面试题
    hdoj1045 Fire Net(二分图最大匹配)
    hdoj1180 诡异的楼梯(bfs+奇偶判断)
    hdoj1373 Channel Allocation(极大团)
  • 原文地址:https://www.cnblogs.com/sode/p/2729118.html
Copyright © 2011-2022 走看看