我有一个精灵和一个路径 (路径 = [[1,1],[1,2],[1,3]]),使用game.physics而不是简单地更改x、y值的最佳实践是什么?
我有一个精灵和一个路径 (路径 = [[1,1],[1,2],[1,3]]),使用game.physics而不是简单地更改x、y值的最佳实践是什么?
sprite.rotation = game.physics.arcade.moveToXY(
sprite,
target.x,
target.y,
300 // speed,
500 // maxTimeToFinish(ms)
);
update()
循环中包含类似以下代码的内容:player.body.velocity.x = 0;
player.body.velocity.y = 0;
Phaser.Timer
(对于类似Pokemen的图块运动)或者游戏的update()循环(对于平滑移动)来运行一个函数,计算要移动的方向,然后使用Phaser.Arcade.Physics方法(moveToXY,accelerateToXy等)来移动并执行该动作。rot.js 是一个基于瓷砖的方法库,包括 A* 寻路算法。
基于瓷砖的角色移动
在带有障碍物碰撞的基于瓷砖的移动中要小心 - Phaser 中的街机碰撞会在与目标接触时触发(包括角落像素),这可能会使得在障碍物之间移动或通过开口处移动变得困难。
你会发现仅仅增加方向上的速度不再起作用了。
通过使用 sprite.body.setBounds()
使你的角色的街机体积比瓷砖小几个像素,并使用出色的 Math.snapTo() 将你的精灵保持在瓷砖的中心位置来解决这个问题。
你可以适应所有四个方向,并将其添加到你的 update() 循环中,以实现平滑的基于瓷砖的角色移动。
if (cursors.left.isDown) {
game.physics.arcade.moveToXY(
sprite,
sprite.body.x - 70, // target x position
Phaser.Math.snapTo(sprite.body.y, 70), // keep y position the same as we are moving along x axis
250 // velocity to move at
) };