在Android中按距离和角度移动对象的距离

时间:2012-11-20 08:42:43

标签: java android math game-physics

我正在制作一款简单的Android平板电脑游戏,并且陷入了一个看似简单的数学问题。

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

Touchpoint

我的手指在45度时,我想从该角度的某个点发射一个物体,知道该物品可以在150范围内行进。我的数学儿子告诉我公式,但我相信它基于0,0是左下角的数字坐标,其中0,0是左上角。

他的数学是这样的:

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

然而,这个数学会返回一些非常不正常的结果。如果我在完美的0度数学是正确的,它告诉我xDirection是100这是我的范围而yDirection是0.如果我在90度它给我x方向-44和y方向89。

我的xDirection和yDirection表示我的子弹需要行进的x和y轴上的像素数,以触摸板所处的角度来实现其范围。

对于其他人来说,这可能是简单的数学,但我迷路了!任何帮助都是SUPERB!

1 个答案:

答案 0 :(得分:0)

我确定了我的问题!

最重要的是,我不知道这一点,是因为必须扭转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。