Как сделать движение Top-Down персонажа в Godot 4 - от А до Я/Полный гайд

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 ก.พ. 2025
  • В этом видео я подробно расскажу, как создать движение персонажа в стиле Top-Down в Godot 4. Мы разобьём весь процесс на шаги, и я объясню каждую деталь. Я сам только начинаю разбираться в разработке игр, поэтому постараюсь сделать всё максимально понятным для новичков.
    🔥 Что мы сделаем в этом видео?
    ✅ Напишем полный скрипт для движения персонажа в 2D игре
    ✅ Добавим анимации для всех направлений (вверх, вниз, влево, вправо)
    ✅ Настроим плавное движение и ускорение (спринт)
    ✅ Разберём, как работает move_and_slide() и другие важные функции
    ✅ Настроим логику для состояния покоя (idle) с учётом направления
    🌟 Это видео отлично подойдёт тем, кто хочет научиться основам создания персонажей в Godot 4, а также тем, кто работает над RPG, приключенческими или другими top-down проектами.
    Не забудьте про спрайты персонажа!
    📌 Ссылка на спрайты: (через 24 часа будет работать, пока можете найти асет на itch.io)
    💬 Если возникнут вопросы, пишите в комментариях - будем разбираться! Я сам только начинаю и уверен, что все мы можем учиться вместе!

ความคิดเห็น • 18

  • @robot3.2321
    @robot3.2321 20 ชั่วโมงที่ผ่านมา +1

    Здрасте видео урок краткий и понятный желаю каналу побольше подписчиков, просмотров и лайков.

  • @ShelestVetra
    @ShelestVetra วันที่ผ่านมา +2

    Все хорошо, но какой урок не посмотри - везде wasd управление. И нигде нет управления по клику мышкой. Нигде нет выбора перса по клику и управлению им как в ртс.

    • @r0mari0-69-sigma
      @r0mari0-69-sigma  วันที่ผ่านมา

      я сделаю как нибудь

    • @Pau4ok2007
      @Pau4ok2007 11 ชั่วโมงที่ผ่านมา

      Ой щас скину🙄

    • @Pau4ok2007
      @Pau4ok2007 11 ชั่วโมงที่ผ่านมา +1

      Вращение+перемещение
      extends CharacterBody2D
      @export var speed = 400
      func get_input():
      look_at(get_global_mouse_position())
      velocity = transform.x * Input.get_axis("down", "up") * speed
      func _physics_process(delta):
      get_input()
      move_and_slide()
      Просто двигаться по клику мыши(в этом случае персонаж уже не будет поворачиваться за курсором)
      extends CharacterBody2D
      @export var speed = 400
      var target = position
      func _input(event):
      # Use is_action_pressed to only accept single taps as input instead of mouse drags.
      if event.is_action_pressed(&"click"):
      target = get_global_mouse_position()
      func _physics_process(delta):
      velocity = position.direction_to(target) * speed
      # look_at(target)
      if position.distance_to(target) > 10:
      move_and_slide()

    • @r0mari0-69-sigma
      @r0mari0-69-sigma  5 ชั่วโมงที่ผ่านมา

      @@Pau4ok2007 Спасибо, легенда 🥇

    • @ShelestVetra
      @ShelestVetra 4 ชั่วโมงที่ผ่านมา

      ​@@Pau4ok2007 спасибо!!!

  • @justcriten
    @justcriten 6 วันที่ผ่านมา

    дикий говнокод, передвижение можно сделать в 2 строчки, + с анимациями еще несколько строк

    • @lirin5031
      @lirin5031 6 วันที่ผ่านมา

      +

    • @Taste-i9r
      @Taste-i9r 6 วันที่ผ่านมา

      Скинь эти две строчки)))

    • @justcriten
      @justcriten 6 วันที่ผ่านมา

      @@Taste-i9r извини 2 писать лень было напишу одну
      velocity = Vector2(Input.get_axis("A","D"), Input.get_axis("W","S")).normalized() * 100.0

    • @r0mari0-69-sigma
      @r0mari0-69-sigma  5 วันที่ผ่านมา +4

      хааххах конечно я знаю эти 2 строчки НООО
      Этот код работает, но он примитивен. В моём коде есть управление анимацией, спринт, idle-состояния и правильное направление персонажа. Плюс, мой код лучше организован, так что его легче расширять.
      то что лучше юзать vector2 я согласен а не каждый раз прописывать велосити

    • @lirin5031
      @lirin5031 5 วันที่ผ่านมา

      @@r0mari0-69-sigma Твой код дикое говнище)