在 Phaser 的多边形区域内约束精灵
Constrain a sprite within a polygon area in Phaser
我正在制作一款点击式冒险游戏。我有一个角色在该地区行走,但我不确定如何限制他的脚可以冒险的地方。在附图中,他的脚是黄色的,但我不能让他走出地板上的蓝色多边形区域。
关于如何使这项工作有任何想法吗?请记住,我正在为角色创建一个补间,以便在用户单击屏幕时跟随。如果他撞到多边形之外的区域,它会让玩家(粉红色矩形)停下来。
我试过街机物理,但那只适用于基于方形的精灵。我想我必须使用 p2 物理?我可以在形状上使用 p2 物理还是像多边形区域这样的简单线条?
您不需要使用任何 Phasers 物理引擎来处理这个问题,您可以使用多边形几何对象来完成,只需检查点击是否在多边形内。
这是一个在线示例:http://phaser.io/examples/v2/geometry/polygon-contains
但是代码很简单。首先创建一个多边形(注意重叠点和多边形的缠绕方式,详情请参阅文档):
poly = new Phaser.Polygon([ new Phaser.Point(200, 100), new Phaser.Point(350, 100), new Phaser.Point(375, 200), new Phaser.Point(150, 200) ]);
然后检查他们是否点击了它:
if (poly.contains(game.input.x, game.input.y))
{
// allow walk
}
我正在制作一款点击式冒险游戏。我有一个角色在该地区行走,但我不确定如何限制他的脚可以冒险的地方。在附图中,他的脚是黄色的,但我不能让他走出地板上的蓝色多边形区域。
关于如何使这项工作有任何想法吗?请记住,我正在为角色创建一个补间,以便在用户单击屏幕时跟随。如果他撞到多边形之外的区域,它会让玩家(粉红色矩形)停下来。
我试过街机物理,但那只适用于基于方形的精灵。我想我必须使用 p2 物理?我可以在形状上使用 p2 物理还是像多边形区域这样的简单线条?
您不需要使用任何 Phasers 物理引擎来处理这个问题,您可以使用多边形几何对象来完成,只需检查点击是否在多边形内。
这是一个在线示例:http://phaser.io/examples/v2/geometry/polygon-contains
但是代码很简单。首先创建一个多边形(注意重叠点和多边形的缠绕方式,详情请参阅文档):
poly = new Phaser.Polygon([ new Phaser.Point(200, 100), new Phaser.Point(350, 100), new Phaser.Point(375, 200), new Phaser.Point(150, 200) ]);
然后检查他们是否点击了它:
if (poly.contains(game.input.x, game.input.y))
{
// allow walk
}