2016-06-21 79 views
0

我的libgdx游戏中有激光,我想知道是否光束击中目标。libgdx与线和多边形的碰撞(Intersector)

我有一些功能(总是成真)有一些麻烦,所以我做了一个非常简单的测试,我仍然是真的!

我错过了什么吗?

为什么此函数返回true?

if(Intersector.intersectLinePolygon(new Vector2(100, 100), new Vector2(200, 100), new Polygon(new float[] {0, 0, 5, 0, 5, 5}))) { 
    System.out.println("true"); 
} 

在此先感谢!

回答

0

我第一次使用Intersector时也被这个问题困住了。

intersectLinePolygon()方法工作在一条无限延伸的线上,而不仅仅是您指定的两个点之间。

使用intersectSegmentPolygon()方法,你想要做什么......

if(Intersector.intersectSegmentPolygon(new Vector2(100, 100), new Vector2(200, 100), new Polygon(new float[] {0, 0, 5, 0, 5, 5}))) { 
    System.out.println("true"); 
} 
+0

谢谢!这解决了这个问题,我得到了这些函数之间的区别,但它不会是假的,因为即使是无限的线条,它也不会在我的例子中相交? – user1818410

+0

它会在(0,0) –