java – 如何在Libgdx中旋转矩形?
发布时间:2020-12-15 02:51:56 所属栏目:Java 来源:网络整理
导读:我将我的精灵旋转90度,我想对我的矩形做同样的事情,以便能够将它们用于碰撞,但是旋转()方法在矩形上不可用. 这就是我做的: treeSpr=new Sprite(new Texture(Gdx.files.internal("tree.png"))); treeSpr.setPosition(250,700); treeSpr.rotate(90f); //Recta
我将我的精灵旋转90度,我想对我的矩形做同样的事情,以便能够将它们用于碰撞,但是旋转()方法在矩形上不可用.
这就是我做的: treeSpr=new Sprite(new Texture(Gdx.files.internal("tree.png"))); treeSpr.setPosition(250,700); treeSpr.rotate(90f); //Rectangle treeRect=new Rectangle(treeSpr.getX(),treeSpr.getHeight(),treeSpr.getWidth(),treeSpr.getHeight()); 解决方法
另一个答案基本上是正确的;但是,我在使用该方法定位多边形时遇到了一些问题.只是澄清一下:
使用Intersector进行碰撞检测时,LibGDX不支持旋转的矩形.如果需要旋转矩形,则应使用Polygon进行碰撞检测. 构建矩形多边形: polygon = new Polygon(new float[]{0,bounds.width,bounds.height,bounds.height}); 如果要旋转多边形,请不要忘记设置它的原点: polygon.setOrigin(bounds.width/2,bounds.height/2); 现在您可以旋转碰撞多边形: polygon.setRotation(degrees); 此外,在代码中的某处,您可能希望更新碰撞多边形的位置以匹配您的精灵: polygon.setPosition(x,y); 我们甚至可以在屏幕上绘制多边形(用于调试目的): drawDebug(ShapeRenderer shapeRenderer) { shapeRenderer.begin(ShapeRenderer.ShapeType.Line); shapeRenderer.polygon(polygon.getTransformedVertices()); shapeRenderer.end(); } 碰撞检测: Intersector的overlapConvexPolygons(): boolean collision = Intersector.overlapConvexPolygons(polygon1,polygon2) 如其他答案中所述,此方法仅在以下情况下有效: >使用矩形所在的凸多边形>执行多边形到多边形检查,例如:你不能混合矩形和多边形 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |