如何使运动机构(3d)跟随玩家

问题描述 投票:0回答:1

我一直在Godot中制作FPS,但我很难让运动机构(敌人)向玩家靠近。有人可以帮忙吗?

godot gdscript
1个回答
0
投票

最简单的方法是获得玩家的位置,将其与敌人的位置进行比较,并使敌人每帧朝其移动。

完整的示例代码在底部。

  1. 要获得玩家的位置,您首先需要引用它。通常,您可以通过将引用存储在全局单例(autoload)中或公开公共属性来执行此操作。

    • 如果要使用全局单例,则可以通过调用var player_position = my_singleton.player.global_transform.origin

    • 获得职位
    • 如果使用的是导出的属性,则可以通过调用var player_position = get_node(path_to_player).global_transform.origin

    • 获得职位
  2. 一旦有了玩家位置,您就可以通过从敌人节点内部写入var direction_to_target = player_position - global_transform.origin来将其与敌人进行比较。

  3. 现在为了跟随玩家,我们使用类似如下的方法覆盖_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

© www.soinside.com 2019 - 2024. All rights reserved.