在 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
}