【问题标题】:How far to move an object by distance and angle in Android在Android中按距离和角度移动物体多远
【发布时间】:2012-11-20 08:42:43
【问题描述】:

我正在制作一个简单的 Android 平板电脑游戏,却被一个看似简单的数学问题困住了。

我有一个触摸板,可以生成您的手指从中心触摸的角度。这是基于 0 度在 3 点钟并且工作正常。

当我的手指处于 45 度角时,我想以该角度从给定点发射一个物体,因为我知道该物体可以在 150 像素范围内移动。我的数学儿子告诉我这个公式,但我相信它的坐标是基于 0,0 是左下角,而 0,0 是左上角。

他的数学是这样的:

xDirection = range(hypotenuse) * Math.cos(angle);
yDirection = range(hypotenuse) * Math.sin(angle);

然而,这个数学会返回一些非常不正常的结果。如果我处于完美的 0 度,那么数学是正确的,它告诉我 xDirection 是 100,这是我的范围,yDirection 是 0。如果我处于 90 度,它给我的 xDirection 为 -44,yDirection 为 89。

我的 xDirection 和 yDirection 表示我的子弹需要在 x 和 y 轴上移动多少像素才能在我的触摸板所在的角度完成其范围。

这对其他人来说可能是简单的数学运算,但我迷路了!任何帮助都会很棒!

【问题讨论】:

  • 角度应该是弧度,而不是度数。

标签: java android math game-physics


【解决方案1】:

我确定了我的问题!

最重要的是,我不知道的是,Y 因子必须颠倒。

另外,因为 Math.cos 和 Math.sin 正在寻找弧度,所以它失败了,因为我输入了从 Math.toDegrees() 返回的文字度数值;

因此,在将数学更改为以下内容后:

xDirection = range(hypotenuse) * Math.cos(Math.toRadians(angle));
yDirection = -range(hypotenuse) * Math.sin(Math.toRadians(angle));

一切都很好。再次注意 y 坐标是颠倒的,因为一般数学将 0,0 放在左下角。我们的屏幕坐标 0,0 位于左上角。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2014-02-09
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多