我想做的是接受输入的用户触摸,将触摸的相机坐标转换为世界坐标,然后创建一个用于向我的 body 施加力的 vector 。 这就是我所拥有的:
Vector3 worldPos = new Vector3(newX, newY, 0);
GameScreen.gameCam.unproject(worldPos);
newX = worldPos.x;
newY = worldPos.y;
Vector2 direction = new Vector2();
direction.set((newX - xPos), (newY - yPos));
if (newX <= xPos){
direction.set((xPos - newX), (yPos - newY));
}
b2Body.applyForceToCenter(direction, true);
我知道就创建 vector 而言,这确实是不正确的,但坐标正在正确转换。
所以我的问题是,当我同时拥有 body 和着陆的世界坐标时,如何才能获得准确的 vector ,即使是在负方向上?
我尝试做一些研究来更好地理解这一切,但我遇到了一些麻烦。任何帮助将不胜感激,感谢您的宝贵时间。
最佳答案
如果您有 newX、newY 屏幕触摸坐标,然后将其更改为世界坐标,您可以通过将 touchWorldPos 减到 currentObjectPos 来获得方向:
Vector3 worldPos = new Vector3(newX, newY, 0);
GameScreen.gameCam.unproject(worldPos);
newX = worldPos.x;
newY = worldPos.y;
Vector2 direction = new Vector2();
direction.set((newX - xPos), (newY - yPos));
b2Body.applyForceToCenter(direction, true);
没有这个 if 语句:
if (newX <= xPos){
direction.set((xPos - newX), (yPos - newY));
}
在 box2d 中,这个方向可能有很小的值,您必须将此方向乘以某个值,例如 100(可能更多)
关于java - 在 Libgdx 中基于触摸输入使用力移动主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39114747/