godot 实现敌人追逐玩家具体代码
时间: 2024-03-12 17:46:49 浏览: 183
下面是一个简单的示例代码,用于实现敌人追逐玩家的功能:
```
extends KinematicBody2D
var player
var navigation
var path
const SPEED = 100
func _ready():
player = get_node("/root/Player")
navigation = $Navigation
func _process(delta):
# 获取玩家的位置
var target_pos = player.get_global_position()
# 获取敌人与玩家之间的路径
path = navigation.get_simple_path(global_position, target_pos)
# 如果路径不为空,则沿着路径移动敌人
if path.size() > 0:
var direction = (path[0] - global_position).normalized()
move_and_slide(direction * SPEED)
func _on_area_entered(area):
# 如果敌人检测到玩家进入了碰撞区域,则停止移动
if area.name == "Player":
path.clear()
velocity = Vector2.ZERO
```
这段代码中,敌人节点包含一个 Navigation 节点和一个 KinematicBody2D 组件。在 _process(delta) 函数中,获取玩家的位置,并使用 Navigation 节点的 get_simple_path() 函数获取敌人与玩家之间的路径。然后使用 KinematicBody2D 组件的 move_and_slide() 函数移动敌人,使其沿着路径朝向玩家移动。
在 KinematicBody2D 组件的 _on_area_entered(area) 函数中,检测玩家是否进入了敌人的碰撞区域,如果是,则停止敌人的移动。
阅读全文