【问题标题】:How do I make a kinematic body (3d) follow a player如何使运动体(3d)跟随玩家
【发布时间】:2020-04-07 20:08:41
【问题描述】:

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

【问题讨论】:

  • 您能否详细说明您迄今为止尝试过的内容以及您的问题是什么?你试过什么代码?什么错误?

标签: godot gdscript


【解决方案1】:

最简单的方法是获取玩家的位置,将其与敌人的位置进行比较,并让敌人每帧都向它移动。

完整的示例代码在底部。

  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

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多