gpt4 book ai didi

java - 在 Libgdx 中基于触摸输入使用力移动主体

转载 作者:行者123 更新时间:2023-12-01 09:34:33 30 4
gpt4 key购买 nike

我想做的是接受输入的用户触摸,将触摸的相机坐标转换为世界坐标,然后创建一个用于向我的 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com