繁体   English   中英

libgdx中的三角形碰撞检测

[英]Collision detection in libgdx for triangles

我正在用libgdx制作一个简单的游戏,想添加一些简单的碰撞检测。 我已经设法通过使用一个简单的矩形来表达我的球员:

boundingBox = new Rectangle(x + 10,y + 10,13,21);

但我的障碍似乎要复杂得多。 它们应该是玩家可以跳跃并具有三角形形状的峰值。 它们几乎像这样: http : //kayin.pyoko.org/iwbtg/forums/Smileys/iwbtg/spikes.gif

据我所知,libgdx中没有三角形。 我已经尝试过使用多边形,但是对于我来说,它们似乎过于复杂。

有没有一种简单的方法可以为他们实现准确的匹配?

在此先感谢您阅读我的文章:)

编辑:谢谢大家的回应,除了为测试目的绘制我的多边形外,现在一切正常。 当我打电话

shapeRenderer.polygon(kid.getVertices());

它只在左上角绘制多边形,因为它的定义是

boundingBox2.setVertices(new float [] {10,10,10,31,23,31,23,10});

但是我通过使用我的孩子类的更新方法来移动它

boundingBox2.setPosition(position.x,position.y);

有没有办法使用内部的位置变化

shapeRenderer.polygon(kid.getVertices());

无论如何,我非常感谢您的帮助,在解决了这个问题之后,我将关闭此线程:)

创建矩形和三角形的多边形。 如果要添加更多高级形状,甚至可以创建自定义多边形。

从矩形转换为多边形非常容易,几个月前我提出了一种方法

public static float[] rectangleToVertices(float x, float y, float width,
        float height) {
    float[] result = new float[8];
    result[0] = x;
    result[1] = y;

    result[2] = x + width;
    result[3] = y;

    result[4] = x + width;
    result[5] = y + height;
    result[6] = x;
    result[7] = y + height;

    return result;
}

libGDX多边形类的好处是,您可以移动多边形甚至旋转多边形,并获得变换后的顶点!

现在您可以使用Intersector类

public static boolean overlapConvexPolygons(Polygon p1,
                            Polygon p2)
Check whether specified convex polygons overlap.
Parameters:
p1 - The first polygon.
p2 - The second polygon.
Returns:
Whether polygons overlap.

出于测试目的,在结束精灵批处理后,请执行以下操作

batch.end(); // you end your spritebatch
renderer.setProjectionMatrix(camera.combined);
renderer.begin(ShapeType.Line)
renderer.polygon(polygonname.getVertices());
renderer.end();

现在,您将可以看到多边形。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM