在2d平台游戏中,我如何在跳到敌人身上时杀死他?



我尝试着执行一个杀戮功能,即玩家可以跳到敌人的上方而敌人将会死亡,我首先计算了玩家和敌人的y坐标。然后使用if语句检查玩家的y坐标和敌人的y坐标,然后让玩家死亡。但问题是,当它跑向玩家时,它也会使敌人死亡。

下面是我的示例代码:
if collision.collider.is_in_group('enemy'):
var player_feet = (position + $CollisionShape2D.shape.extents).y
print(player_feet)
if player_feet < collision.collider.position.y:
print(player_feet)
print(collision.collider.position.y)
collision.collider.take_damage()
velocity.y = -200
else:
hurt()

这是我的玩家和敌人精灵的位置

  • 玩家的精灵位置
  • 敌人精灵位置

是否有其他方法来解决这个问题,或者我应该在我的代码中改变什么?

检查垂直速度velocity.y。如果玩家向下移动velocity.y > 0,那么它可能会落在敌人身上。否则不。

实际上,由于舍入误差,您可能希望使用阈值velocity.y > 0.01。s


另一种方法可以是放置KinematicBody2DArea2D(或RayCast2D)子,并使用它来找出玩家站在什么上面。

最新更新