Libgdx 使用bullet physics向特定方向的对象应用力

Libgdx 使用bullet physics向特定方向的对象应用力,libgdx,bullet,bulletphysics,Libgdx,Bullet,Bulletphysics,我试图从摄影机原点发射立方体,使用摄影机方向作为发射线。我希望能够用int来改变镜头中传递的能量 在浏览了web上的各种代码之后,下面的内容似乎就是我要寻找的 obj.body.applyCentralImpulse(Vector3); 其中矢量3给出了X,Y,Z上的力 下面给出了相机的观察方向 Vector3 dir = cam.direction; 我如何将dir和所需的力结合起来 非常感谢。这就是它对我的作用: float force = 10.0f; //but any

我试图从摄影机原点发射立方体,使用摄影机方向作为发射线。我希望能够用int来改变镜头中传递的能量

在浏览了web上的各种代码之后,下面的内容似乎就是我要寻找的

obj.body.applyCentralImpulse(Vector3);    
其中矢量3给出了X,Y,Z上的力

下面给出了相机的观察方向

Vector3 dir = cam.direction;
我如何将dir和所需的力结合起来


非常感谢。

这就是它对我的作用:

float force = 10.0f;   //but any value that works for you
Vector3 dir = normalize(cam.origin + cam.direction) * force; //suppose your camera moves around
body->applyCentralImpulse(dir);
这应该起作用:-

Vector3 dir = new Vector3(cam.direction);
obj.body.applyCentralImpulse(dir.scl(force));

只需用不同的值替换
force
,直到得到一个运行良好的值。

Id以前研究过这个问题,但正在寻找其他问题。感谢您的帮助,
Ray-Ray=cam.getPickRay(Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2);((b刚体)物体)。应用中心脉冲(射线方向scl(100f))工作过的力是否确实要使用摄影机位置?听起来不对。@SteveSmith我不使用摄像机的位置来表示原力。。。力只是一个常量,就像在你的评论中你将
dir
作为一个脉冲力,并且
dir
被设置为相机位置,添加到方向上(然后被修改)。是的,但是如果你看你的代码,它完全相同,不同的是我手动计算方向向量,并用力将其放大,当您使用cam.direction时。。。结果是sameOP想要向摄影机的方向发射立方体。以代码为例,如果凸轮位于(x,y,z)10,10,10,并且凸轮方向(比如)向上(0,1,0),那么加起来就是10,11,10。如果你将其标准化并乘以(比如)1的力,你将施加(大约)5.5、6.1、5.5的冲击力,这不会使立方体向上燃烧。用我的代码,它将是一个0,1,0的冲力,即向上。