开发者问题收集

Phaser3 游戏中玩家碰撞不起作用

2021-08-04
705

我已经完成了一些关于 Phaser3 的教程和短期课程,并且开始开发自己的游戏。示例游戏中的游戏机制与我想要实现的不同,因此我尝试对其进行相应的修改。但这导致了一些奇怪的结果。

我的出发点是一个平台跳跃游戏。它具有街机物理特性,玩家可以通过光标键移动:左 player.setVelocityX(-160) 、右 player.setVelocityX(160) 等等。玩家和平台发生碰撞:this.physics.add.collider(player, platform)。

我尝试将游戏改为 2D 迷宫游戏,玩家可以向左、向右、向上和向下移动。我禁用了重力并更改了关键功能:

player.x -= 2;
player.x += 2;
player.y -= 2;
player.y += 2;

除了与平台碰撞之外,移动效果很好:玩家会穿过它们。我是不是走错路了?

这是该项目的链接: https://codesandbox.io/s/trusting-jepsen-d2f93?file=/index.html

您也可以在那里找到带注释的 setVelocity 行。

1个回答

我从另一个论坛发现,我实际上应该使用 setVelocityXsetVelocityY 命令进行移动:设置 player.x 和 player.y 值时碰撞不起作用。这是我首先尝试的,但我应该处理停止角色的事件。当没有按下任何键时,速度值应该设置为 0。我确实有一个处理程序,但它在错误的位置,移动方式很奇怪。我已经更新了沙盒。

Kejender
2021-08-12