Navigation2d использовать с move_and_slide в Годо - PullRequest
0 голосов
/ 16 января 2019

Переписано и отредактировано для ясности. Предположим, у меня есть 2d платформер, как в следующем примере:

https://github.com/godotengine/godot-demo-projects/blob/master/2d/kinematic_character/player.gd

Теперь ... Скажем, у меня есть местоположение игрока (vector2) и местоположение врага (vector2). Вражеское движение работает так же, как игрок в приведенном выше примере. Я использую get_simple_path, чтобы построить массив уже существующих точек, которые ведут от местоположения противника к месту игрока. Как мне использовать этот массив с move_and_slide, чтобы перебросить врага из пункта А в пункт Б?

1 Ответ

0 голосов
/ 18 января 2019

Вы можете попробовать следующее:

const GRAVITY = 1000
const SLOPE_SLIDE_STOP = false

var speed = 250
var velocity = Vector2()

var points = [Vector2(100, 200), Vector2(200, 400), Vector2(400, 800)]
var current_point = null

func _physics_process(delta):
    if points and current_point is null:
        current_point = points.pop_front()

    if current_point:
        if current_point.distance_to(position) > 0:
            target_direction = (position - current_point).normalized()

            velocity.y += delta * GRAVITY

            velocity = lerp(velocity, target_speed, 0.1)
            velocity = move_and_slide(velocity, target_direction, SLOPE_SLIDE_STOP)
        else:
            current_point = null
...