gpt4 book ai didi

java - java libgdx 直接点击拍摄对象

转载 作者:行者123 更新时间:2023-11-30 06:57:22 26 4
gpt4 key购买 nike

我试图让我的玩家发射一个咒语,它会传送到玩家点击的地方。我可以通过执行以下操作轻松完成此操作。

    if(position.x >= destination.x - 1 && position.x <= destination.x + 1)
reachedX = true;
if(position.y >= destination.y - 1 && position.y <= destination.y + 1)
reachedY = true;

但是,如果玩家原点位于 0,0,我在 10,300 处单击,那么它会向右和向上移动,但当法术达到 x 为 10 时,它会直接向上移动。我希望咒语以一定角度行进,使其与 y 坐标同时到达 x 坐标。这是一张图片,显示发生了什么以及我想要发生什么。

Image example

最佳答案

在第一张图片中,咒语似乎旋转了 45°,直到到达正确的 x 坐标。这听起来像是 x 和 y 速度是相等的,无论目标点在哪里。
相反,您应该有一个方向并取决于 x 和 y 速度。
为此,您首先需要了解重点,即播放器正在点击。
因此,您可以实现 InputProcessor,它是 touchDown(int screenX, int screenY, int pointer, int button)
screenXscreenY 参数以屏幕坐标(像素)给出,因此需要转换为您的世界坐标。这可以使用 cameraviewportunproject(Vector2 screenCoords) 来完成。此方法返回一个提供世界坐标的 Vector2
现在你需要找出你和点击点之间的方向Vector2。方向 Vector 计算如下:

new Vector2(otherPos.x - myPos.x, otherPos.y - myPos.y).nor();

这将返回两点之间的归一化方向 Vector
现在你只需要在 x 方向移动 dir.x*spellSpeed*delta 并在 y 方向移动 dir.y*spellSpeed*delta ,它应该看起来就像你的第二张照片。

关于java - java libgdx 直接点击拍摄对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33490655/

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