具体查找对象用于碰撞检测目的的位置

时间:2011-09-04 21:34:20

标签: android opengl-es coordinates collision

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

来实现
 Variable++

每一帧。

unfortunatley我无法弄清楚如何返回广场的确切位置,因为广场可以以任何角度行进,因此不会严格遵循世界协调网格。这意味着x变量不是形状x坐标。

如何返回形状的精确坐标,以及如何以这样的方式进行操作,即我可以从同一个类中绘制两个不同的方格。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

因此,您可以测量物体沿其内侧横轴开始的距离以及该轴与水平轴之间的角度测量值?

如果是这样,那么你想要的公式是简单的三角学。假设对象从(x,y)开始并沿着一个轴与水平方向以“角度”的角度移动了“距离”单位,那么当前位置(x',y')是:

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

如果您的原点位于屏幕的左下角,并且轴排列为方格纸样式,x向右增加,y随着向上增加而增加,则假定角度是逆时针测量的,并且对象正在朝向角度为零时为正x。

如果你允许挥手解释,公式是有效的,因为正弦和余弦的一个定义是它们是指定角度的单位圆外侧点的(x,y)坐标。它也与大多数人学习三角学的第一件事相匹配,正弦是“与斜边相反”,余弦是“与斜边相邻”。在这种情况下,您的斜边具有长度“距离”,并且您希望获得与轴重合的直角三角形的“相对”和“相邻”长度。

假设Android在此区域中遵循J2SE,需要注意的是Math.sinMath.cos以弧度为单位,而OpenGL的rotatef以度为单位。 Math.toDegreesMath.toRadians可以为您进行转换。