gpt4 book ai didi

java - Libgdx 链形位置

转载 作者:行者123 更新时间:2023-11-30 08:28:40 25 4
gpt4 key购买 nike

我正在尝试制作一个玩家(圆圈)必须收集一些星星的游戏。星星将位于不同的位置,为了获得星星,玩家必须绘制斜坡才能到达星星。下图。

http://3w-bg.org/game/pic.PNG

红线是用户在屏幕上绘制的位置。

好的,当用户在屏幕上触摸和拖动时,我会捕获坐标,然后我使用此坐标为该线创建一个 ChainShape。问题是这条线是在触摸区域附近绘制的。下图。

http://3w-bg.org/game/pic2.PNG

在我的理解中,世界和屏幕位置并不相同。那么我怎样才能准确地在用户触摸的地方绘制链形线。尝试了 camera.project/unproject,但没有帮助。

最佳答案

通常在使用 Box2D 时,您应该定义某种像素与米的比率。这样做是为了使物理世界中的坐标更小,以保持数值稳定性。

当使用 Camera 和常量 PIXEL_TO_METER 转换值时,您可以像这样转换坐标:

public static Vector2 screenToPhysics(Camera camera, Vector2 screenPos) {
Vector3 worldPos = camera.unproject(new Vector3(screenPos.x, screenPos.y, 0));
return new Vector2(worldPos.x, worldPos.y).scl(1f / PIXEL_TO_METER);
}

public static Vector2 physicsToScreen(Camera camera, Vector2 physicsPos) {
Vector3 worldPos = new Vector3(physicsPos.x, physicsPos.y, 0).scl(PIXEL_TO_METER);
Vector3 screenPos = camera.project(worldPos);
return new Vector2(screenPos.x, screenPos.y);
}

关于java - Libgdx 链形位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20071682/

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