为了碰撞检测的目的,明确地找到物体的位置



我有一个正方形,它旋转到一个随机的角度,然后沿着它指向的方向直线移动。它使用一个变量作为它的x轴,然后调用

 Variable++

每一帧。

不幸的是,我无法计算出如何返回正方形的确切位置,因为正方形可以以任何角度移动,因此不会严格遵循世界坐标网格。这意味着x变量不是形状的x坐标。

我如何返回形状的精确坐标,我如何做到这一点,我可以有两个正方形从同一个类绘制不同的行为

那么你就得到了从物体开始的位置沿其内部横轴的距离以及该轴与水平线之间的角度?

如果是,那么你想要的公式是简单的三角函数。假设物体从(x, y)开始,并沿轴以与水平线成"角"的角度移动了"距离"单位,那么当前位置(x', y')为:

x' = x + distance * cos(angle)
y' = y + distance * sin(angle)

如果原点在屏幕的左下方,坐标轴的排列方式是x向右增加,y向上增加,这就假设角度是逆时针测量的,当角度为零时,物体沿着正x前进。

如果允许的话,这个公式是成立的,因为正弦和余弦的一个定义是它们是单位圆外点在指定角度上的(x, y)坐标。它也符合大多数人学习三角学的第一个概念,sin等于对边除以斜边,cos等于邻边除以斜边。在这种情况下,斜边的长度为"距离",并且你想要得到与坐标轴重合的直角三角形的"对边"one_answers"邻边"长度。

假设Android在这方面遵循J2SE,需要注意的一件事是Math.sinMath.cos以弧度为角度,而OpenGL的rotatef以度为参数。Math.toDegreesMath.toRadians可以为您做转换

当你制作形状时,你应该已经指定了它的X &Y坐标。我不太清楚你说找不到坐标是什么意思?

还要确保你做名气独立运动;目前,您在程序的每个循环中向变量添加1。这意味着如果它以每秒60帧的速度运行,它将移动60个单位,但如果它以每秒30帧的速度运行,它将以一半的速度移动

最新更新