【问题标题】:How to destroy an enemy when player.y greater than enemy.y当玩家.y大于敌人.y时如何摧毁敌人
【发布时间】:2026-02-08 00:00:02
【问题描述】:

我想要做的是,如果玩家从侧面接触敌人,那么玩家要么失去生命,要么导致游戏结束。 但是如果玩家跳到敌人的头顶,那么它会导致敌人消失。

当玩家在地面上接触敌人时 (玩家y轴等于敌人y轴)...

player.y == enemy.y

当玩家跳到敌人头顶时。 (玩家y轴大于敌人y轴)...

player.y > enemy.y

到目前为止,这是我的代码...

 Level.prototype.playerTouched = function(type, actor) {
      if (type == "enemy" && this.status == null && player.y == enemy.y) {
        this.status = "lost";
        this.finishDelay = 1;
      } else if (type == "enemy" && player.y > enemy.y) {
        this.actors = this.actors.filter(function(other) {
          return other != actor;
        });
      }
    };

【问题讨论】:

  • 有点不清楚你在问什么。这段代码哪些有效,哪些无效?
  • 那么问题出在哪里?你在问什么?
  • 我相信这是用 javascript player.y 编写此代码的正确方法 敌人.y 玩家 y 大于比敌人 y。我遇到的问题是当我将它们添加到我的代码中时它不起作用。但是,没有它们,代码就可以正常工作。所以我相信我遇到的问题是我没有以正确的方式添加它们。

标签: javascript css html game-physics


【解决方案1】:

如果你不想在这种情况下处理角度计算,那么你需要碰撞器的顶部和底部位置

简单的逻辑就是这样工作的

if(playercollider.originY > enemycollider.originY && playercollider.originX > enemycollider.leftX && playercollider.originX < enemycollider.rightX)
{
    //Enemy gets hurt
}
else
{
    //Player gets hurt
}

【讨论】:

  • 当我尝试添加代码时,游戏会卡住。所以它正在做某事。但是我还没有让它做我想做的事。这又是这样,如果玩家从侧面接触敌人,那么玩家要么失去生命,要么导致游戏结束。但是如果玩家跳到敌人的头上,就会导致敌人消失。
  • 很奇怪,如果您还想解决这个问题,请与我们分享更多代码行...
  • s3-us-west-2.amazonaws.com/mbdappbucket/platformgame2.html你可以去这里看我的游戏,点击查看源代码查看代码。
  • Level.prototype.playerTouched 函数中,无法读取玩家和触碰演员的位置值?为什么不... console.log("玩家 Y: " + this.pos.y);你得到的是 //Player Y: undefined