Передвижение игрока в 1 СТРОКУ | Godot 4, GDScript

Поделиться
HTML-код
  • Опубликовано: 29 июн 2023
  • #godot #gdscript
  • ИгрыИгры

Комментарии • 57

  • @user-hm1zg4zt6i
    @user-hm1zg4zt6i Месяц назад +5

    для тех кто не хочет ждать:
    func move_player():
    velocity = Vector2(Input.get_axis("left", "right"), Input.get_axis("up", "down")).normalized() * speed
    move_and_slide()

  • @Koaalla
    @Koaalla 9 месяцев назад +24

    Почему перестал, продолжай) сейчас как никогда актуально)

  • @arckanumsavage2822
    @arckanumsavage2822 8 месяцев назад +5

    Оживай, чел. Доходчиво объясняешь.

  • @geo76132
    @geo76132 5 месяцев назад

    Очень полезно, благодарю!

  • @belockbelock3648
    @belockbelock3648 3 месяца назад +4

    Только 1 видео? На годот актуальных гайдов очень мало, и все в основном по старой версии. Не забрасывай это дело, если есть что рассказать!

  • @IlaShorohov
    @IlaShorohov 4 дня назад

    Имба,очень круто

  • @DeNcHiK0_0
    @DeNcHiK0_0 3 месяца назад

    Подписка готова, ждём-с от тебя ещё роликов!

  • @Mika43344
    @Mika43344 4 месяца назад +1

    чёткое видео, всё понятно

  • @user-to5el1yk1s
    @user-to5el1yk1s 9 месяцев назад +4

    чел продолжай

  • @rokot
    @rokot 2 месяца назад +1

    Спасибо, работает. Только сейчас чуть-чуть поменялось. Вместо left, теперь пишем vi_left

  • @NatashaLuxYT
    @NatashaLuxYT 9 месяцев назад +6

    только начала изучать годо и увидев это я просто в шоке :о
    видео по годо 4 будут?

  • @usbashka3098
    @usbashka3098 9 месяцев назад +10

    Ещё есть функция get_vector, которая сразу Vector2D возвращает. Можно написать
    var direction = Input.get_vector("left", "right", "up", "down")

    • @zaka45
      @zaka45 8 месяцев назад

      это лучше?

    • @achieveunlockg7239
      @achieveunlockg7239 8 месяцев назад

      ​@@zaka45да

    • @proKaps
      @proKaps 8 месяцев назад

      @@zaka45 минимум в два раза

    • @m.vizaru7879
      @m.vizaru7879 7 месяцев назад

      слушай не знаешь как сделать чтоб при зажиме (верх,лево) и т.д значение дайрекшн были целыми, а не 0.707107. Или как можно включить анимации?
      у меня сейчас
      if direction.y == -1 and direction.x == -1:
      anim.flip_h = true
      animplayer.play("run_up_xy")
      но он не работает

    • @proKaps
      @proKaps 7 месяцев назад

      @@m.vizaru7879 можно например округлить значения к ближайшему целому, что-то вроде этого:
      var direction = Input.get_vector("left", "right", "up", "down")
      var rounded_direction = Vector2(round(direction.x), round(direction.y))
      print("direction:", direction, " rounded_direction:", rounded_direction)

  • @BLAZER769
    @BLAZER769 7 дней назад

    var speed = 300
    func _process(delta):
    pass

    var direction: Vector2 = Vector2(Input.get_axis("ui_left","ui_right"),Input.get_axis("ui_up","ui_down")).normalized()
    velocity = direction * speed
    move_and_slide()

  • @ksiliaks
    @ksiliaks Месяц назад

    норм

  • @Senior_Amiro
    @Senior_Amiro 7 месяцев назад +3

    Если вам спрайты добавить надо(ГОДО4):
    extends CharacterBody2D
    const SPEED = 300.0
    const JUMP_VELOCITY = 300
    # Get the gravity from the project settings to be synced with RigidBody nodes.
    var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
    func _physics_process(delta):
    velocity = Vector2(Input.get_axis("ui_left", "ui_right"), Input.get_axis("ui_up", "ui_down")).normalized() * SPEED
    move_and_slide()
    if Input.is_action_pressed("ui_down"):
    $AnimatedSprite2D.play("LookDown")
    if Input.is_action_pressed("ui_up"):
    $AnimatedSprite2D.play("LookUP")
    if Input.is_action_pressed("ui_left"):
    $AnimatedSprite2D.play("LookLeft")
    if Input.is_action_pressed("ui_right"):
    $AnimatedSprite2D.play("LookRight")

    • @FANROLL_OFFICIAL
      @FANROLL_OFFICIAL 5 месяцев назад

      Что это

    • @pricklyroseblack
      @pricklyroseblack 5 месяцев назад

      Он добавляет проверку на кнопки чтобы проигрывалась анимка@@FANROLL_OFFICIAL

    • @pricklyroseblack
      @pricklyroseblack 5 месяцев назад

      Легче пожалуй сделать скриптом в самом AnimatedSprite

  • @cq7743
    @cq7743 11 месяцев назад +6

    This has been helpful for me to achieve player mobility in the game, thank you very much. Can I share your video with other websites and attach a link?😀

  • @woofkaf7724
    @woofkaf7724 3 месяца назад

    Современное программирование - написать компактно. И буй с ним что тот кто будет после тебя ничего не поймет.

  • @IlaShorohov
    @IlaShorohov 4 дня назад

    Жду новых видео

  • @volkan7631
    @volkan7631 10 месяцев назад +4

    Отличное видео! Только жалко, что канал мертв

  • @Godot-tp4hm
    @Godot-tp4hm 9 месяцев назад +3

    И почему всего 1 урок по ГОДО, не порядок, братик!

  • @_shich_
    @_shich_ 8 месяцев назад

    спс

  • @akovemil9528
    @akovemil9528 7 месяцев назад

    Спасиб

  • @sdxfk
    @sdxfk 8 месяцев назад

    Супер! А как сделать движение в изометрической плоскости в одну строку? Чтобы при нажатии одной кнопки передвигался по диагонали?

    • @bublebob
      @bublebob 4 месяца назад +1

      У тебя же есть система координат, сложением направлений и назначением на удобные тебе кнопки

  • @Vaska-se8br
    @Vaska-se8br Месяц назад

    Привет ! Я новенький и может быть задаю глупый вопрос )
    А почему ты старые строки не удалил , как мне понять что срабатывают новые строки а не старые ?
    Ты ведь заменил грамосткий код на две, три строки.... Разве нет ?)

    • @prikol9146
      @prikol9146 14 дней назад

      Если ты обратишь внимание, в самом вверху в методе '_process' ты можешь увидеть что единственный метод который вызывается в данной функции - move_player_3.
      Как раз таки вся новая реализация и была написана в этом методе move_player_3.

  • @lil_crystal_
    @lil_crystal_ 3 месяца назад

    не обманул, рил на 1 строку

  • @user-zn4xh6gg5i
    @user-zn4xh6gg5i 7 дней назад

    Чел воскресни

  • @kapitoshka100
    @kapitoshka100 6 месяцев назад +1

    привет.можешь пожалуйста сказать, что это за язык программировния.

  • @rolin5529
    @rolin5529 7 месяцев назад

    кто знает как сделать рванное движение? Чтоб передвигался только по координатам которые на 8 делятся

  • @RPTYPER
    @RPTYPER 3 месяца назад

    Помогите кто-нибудь! Пж! Мне пишут, что у меня таблутация неверная, а я не знаю, как исправить.extends KinematicBody2D
    var speed = 150
    var jumpForce =300
    var gravity = 700
    var vel = Vector2()
    func _physics_process(delta):
    if Input.is_action_pressed("player_left"):
    vel.x -= speed
    elif Input.is_action_pressed("player_left"):
    vel.x += speed
    move_and_slide(vel, Vector2.UP)

  • @sadHamster
    @sadHamster 9 месяцев назад +3

    Иногда лучше сделать длиннее, но интуитивно понятнее, чем вспоминать как оно вообще работает.

    • @dead_blue_jay
      @dead_blue_jay 9 месяцев назад

      ну в данном случае используются довольно базовые функции GDScript, кмк
      + что делает условный get_axis() можно и в самом движке посмотреть 🫥

  • @sayrikgmd
    @sayrikgmd 7 месяцев назад

    Move_and_slide просто не работает, персонаж просто не двигается

    • @user-mz3ev8be4v
      @user-mz3ev8be4v 6 месяцев назад

      Такая же проблема не подскажешь как решил ее

    • @sayrikgmd
      @sayrikgmd 6 месяцев назад

      @@user-mz3ev8be4v к сожалению никак. Попробуй полистать форумы, может что то найдёшь.

    • @lidanit0191
      @lidanit0191 2 месяца назад

      Помощь ещё нужна?

    • @sayrikgmd
      @sayrikgmd 2 месяца назад

      @@lidanit0191 не помешала бы :_)

    • @lidanit0191
      @lidanit0191 2 месяца назад

      @@sayrikgmd скинь примерный код, который у тебя не работает

  • @diobrando5839
    @diobrando5839 6 месяцев назад +2

    Я так делаю
    const MOTION_SPEED = 30 # Pixels/second.
    const FRICTION_FACTOR = 0.89
    func _physics_process(_delta):
    var motion = Input.get_vector("move_left", "move_right", "move_up", "move_down")
    # Make diagonal movement fit isometric tiles.
    motion.y /= 2
    velocity += motion.normalized() * MOTION_SPEED
    # Apply friction.
    velocity *= FRICTION_FACTOR
    move_and_slide()

    • @prikol9146
      @prikol9146 14 дней назад

      метод get_vector класса Input уже возвращает нормализованный вектор, так что смысла в повторной нормализации - нет