Android Rect.intersects 不工作?
Android Rect.intersects not working?
我想检查两个矩形是否相交!我有一个 GLObject class,它代表在屏幕上呈现的项目。还有我的游戏 class,它制作其他游戏内容。使用 OpenGLEs 2.0 的渲染有效! 2 个项目显示正确,但如果我将一个项目移到另一个项目中,则没有任何反应。矩形和顶点是正确的(证明:screen/Log 输出上纹理的正确位置)
游戏中class:
@Override
public void Process(long elapsed)
{
// TODO: Implement this method
super.Process(elapsed);
Rect r1 = mtest1.getRect(); // get Rectangle
Rect r2 = mtest2.getRect();
if (Rect.intersects(r1, r2)) // always false
System.exit(0);
//Log.e("logpos", "left" + r1.left + " top" + r1.top + " right" + r1.right + " bottom" + r1.bottom);
//this logs the correct position:
//left830 top200 right920 bottom100 for r1
//left810 top200 right900 bottom100 for r2
r1 = r2; // make them equal for testing
if (Rect.intersects(r1, r2)) // always flase
System.exit(0);
}
在我的 GLObject class:
private float mRect[] =
{
//counterclockwise
10.0f, 200f, 0.0f, // top left
10.0f, 100f, 0.0f, // bottom left
100f, 100f, 0.0f, // bottom right
100f, 200f, 0.0f // top right
};
//...
public Rect getRect()
{
return new Rect((int)mRect[0],
(int)mRect[1],
(int)mRect[6],
(int)mRect[4]);
}
我想我有解决办法:
我的 OpenGL Scene 和 Android Rect Class 的坐标系不同:
^
I
I
I OpenGL
I
I
I===========================>
I===========================>
I
I
I Android Rect Class
I
I
v
(横向)
我更改了 Ortho,现在可以使用了。
我想检查两个矩形是否相交!我有一个 GLObject class,它代表在屏幕上呈现的项目。还有我的游戏 class,它制作其他游戏内容。使用 OpenGLEs 2.0 的渲染有效! 2 个项目显示正确,但如果我将一个项目移到另一个项目中,则没有任何反应。矩形和顶点是正确的(证明:screen/Log 输出上纹理的正确位置)
游戏中class:
@Override
public void Process(long elapsed)
{
// TODO: Implement this method
super.Process(elapsed);
Rect r1 = mtest1.getRect(); // get Rectangle
Rect r2 = mtest2.getRect();
if (Rect.intersects(r1, r2)) // always false
System.exit(0);
//Log.e("logpos", "left" + r1.left + " top" + r1.top + " right" + r1.right + " bottom" + r1.bottom);
//this logs the correct position:
//left830 top200 right920 bottom100 for r1
//left810 top200 right900 bottom100 for r2
r1 = r2; // make them equal for testing
if (Rect.intersects(r1, r2)) // always flase
System.exit(0);
}
在我的 GLObject class:
private float mRect[] =
{
//counterclockwise
10.0f, 200f, 0.0f, // top left
10.0f, 100f, 0.0f, // bottom left
100f, 100f, 0.0f, // bottom right
100f, 200f, 0.0f // top right
};
//...
public Rect getRect()
{
return new Rect((int)mRect[0],
(int)mRect[1],
(int)mRect[6],
(int)mRect[4]);
}
我想我有解决办法: 我的 OpenGL Scene 和 Android Rect Class 的坐标系不同:
^
I
I
I OpenGL
I
I
I===========================>
I===========================>
I
I
I Android Rect Class
I
I
v
(横向)
我更改了 Ortho,现在可以使用了。