• 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行代码 完美解决!

  • 相关阅读:
    ES 设置管理
    ES 数据搜索(1)
    ES 集群管理及基本操作
    ES 安装
    ES 基本概念
    HBase 缓存
    【Linux】【8】切换JDK版本时报错,bash: ./java: cannot execute binary file
    【Linux】【7】常用命令-目录处理命令
    【Linux】【6】Java项目打成Jar包后部署至服务器上
    【Linux】【5】安装jdk1.8并配置环境变量,以及切换jdk
  • 原文地址:https://www.cnblogs.com/sode/p/2729118.html
Copyright © 2020-2023  润新知