【发布时间】:2020-04-07 20:08:41
【问题描述】:
我一直在 Godot 中制作 FPS,但我很难让运动体(敌人)靠近玩家。有人可以帮忙吗?
【问题讨论】:
-
您能否详细说明您迄今为止尝试过的内容以及您的问题是什么?你试过什么代码?什么错误?
我一直在 Godot 中制作 FPS,但我很难让运动体(敌人)靠近玩家。有人可以帮忙吗?
【问题讨论】:
最简单的方法是获取玩家的位置,将其与敌人的位置进行比较,并让敌人每帧都向它移动。
完整的示例代码在底部。
要获取玩家的位置,您首先需要对其进行引用。您通常可以通过将引用存储在全局单例 (autoload) 中或公开公共属性来做到这一点。
如果您使用全局单例,那么您可以通过调用 var player_position = my_singleton.player.global_transform.origin
如果您使用的是导出的属性,那么您可以通过调用var player_position = get_node(path_to_player).global_transform.origin
获得玩家位置后,您可以通过在敌人节点内部写入var direction_to_target = player_position - global_transform.origin 将其与敌人进行比较。
现在为了跟随玩家,我们用这样的东西覆盖_physics_process方法:
### Inside the enemy script
var ENEMY_SPEED= 50
func _physics_process(delta):
var player_position = my_singleton.player.global_transform.origin
var direction_to_target = (player_position - global_transform.origin).normalized() # We normalize the vector because we only care about the direction
move_and_slide(direction_to_target * ENEMY_SPEED) # We multiply the direction by the speed
【讨论】: