Движение в игровом движке / Все что нужно знать / Godot Engine

Поділитися
Вставка
  • Опубліковано 20 гру 2024

КОМЕНТАРІ • 93

  • @MrGalyano
    @MrGalyano 2 роки тому +56

    У вас ошибочка в картинке на 1:18. _physics_process() срабатывает 60 раз в секунду и не зависит от FPS, а вот _process уже выполняется каждый кадр и может быть быстрее или медленней в зависимости от выдаваемого FPS .

    • @frontend-pashtet
      @frontend-pashtet  2 роки тому +22

      Хороший поинт. Закрепляю коммент. Спасибо за поправку.

  • @danyefimow
    @danyefimow 3 роки тому +21

    А ты хорош!)) Прям лучший контент по теме разработки игр в RU сегменте. Спасибо и удачи тебе!

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому +3

      Это очень приятный комментарий. Спасибо за поддержку)

  • @gamedevomni
    @gamedevomni 2 роки тому +5

    Очень качественный урок и крутой проект для урока, прям ответственно к делу подошёл. Жду новые видосы!

  • @fallinglight8564
    @fallinglight8564 6 місяців тому +1

    Подача огонь, ты даже заморочился со сценой! :)

  • @Deeui
    @Deeui 3 роки тому +4

    Вот что я называю "полезное видео". Не зря подписался на тебя.

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому +1

      Очень рад это слышать. Спасибо за комментарий.

  • @IIpoger404
    @IIpoger404 Рік тому +4

    Я не знал что 6 минут будут длится так долго!!!!!

  • @ChelSammi9837
    @ChelSammi9837 2 роки тому +2

    Спасибо тебе большое за видео,я наконец-то понял как двигать персонажа..

  • @Felex_Fox
    @Felex_Fox 7 місяців тому +1

    Немного не понятно но очень интересно

  • @soundsbeard
    @soundsbeard 3 роки тому +3

    крутой видос и крутую сцену подготовил

  • @_1mrscool11_9
    @_1mrscool11_9 3 роки тому +1

    Оно того стоило!
    (Я про отсутствие стрима)
    А так полезный видос хоть и не все поймут его суть а ты меня на одну идею натолкнул

  • @asturmor7641
    @asturmor7641 2 роки тому +3

    Хороший видос, классная подача! Продолжай вот в таком же духе)

    • @frontend-pashtet
      @frontend-pashtet  2 роки тому +1

      Постараюсь) Спасибо за комментарий

  • @ИльичьЛенин-й5ш
    @ИльичьЛенин-й5ш 3 роки тому +1

    спасибо большое буду вникать

  • @NobodyHere539
    @NobodyHere539 3 роки тому +2

    Есть ещё lerp, помним, любим

    • @egopos
      @egopos 3 роки тому

      lerp это и есть linear_interpolate

    • @NobodyHere539
      @NobodyHere539 3 роки тому +1

      @@egopos ну так в видео про эту функцию не слова не было просто.)

  • @listenheart5967
    @listenheart5967 3 роки тому +2

    Красава, хороший материал.

  • @Gostyr
    @Gostyr 11 місяців тому +9

    коротко и не понятно

  • @Хаято-з2и
    @Хаято-з2и 3 роки тому +1

    Я щяс перешел на этот движок есть такой вопросик можно ли сделать мультиплеер на движке

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому +1

      Да, конечно. Народ делает сетевые игры. Вот тут есть пример и библиотека для упрощения разработки. Правда все на английском heroiclabs.com/blog/tutorials/godot-fishgame/index.html

  • @merk_merk
    @merk_merk 6 місяців тому +1

    1:34 на этом моменте я сомневаюсь что смогу делать игры

  • @hao761
    @hao761 4 місяці тому

    В клиент-серверной игре наверняка к этому всему добавятся свои нюансы

  • @Kinoblyfun
    @Kinoblyfun 2 роки тому +2

    У меня болит голова))

  • @Хаято-з2и
    @Хаято-з2и 3 роки тому +1

    Блин ошибка кода пж подскажи что тут не так
    Var damaged = {
    "damaged":20,
    "is_fire_damage:true,
    "orydie":"arbalet"
    }
    funk _ready()
    var damag = damaged["damaged"]:
    if damag != 10:
    damag + 20
    И блин удобнобы было если бы была группа вк туда бы можно было бы выкладывать ошибки и все что связано с годот

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому +1

      Привет. Не очевидно, какая тут ошибка. Что Godot пишет при запуске кода? Что ты хочешь, чтобы получилось?
      Есть дискорд сервер discord.gg/tJxdsvHtBX
      и чат в телеграмм
      t.me/frontend_pashtet_chat

    • @Mitsumata
      @Mitsumata 2 роки тому +1

      Инглиш подтяни, какой funk? Правильно func писать. Также вместо damage какой-то damag написан... так дело не пойдёт.

  • @Mitsumata
    @Mitsumata 2 роки тому +1

    *Чувак, спасибо тебе!*

  • @АнатолийИванович-и3н

    что, если я переписал первый пример, и при нажатии на клавишу объект просто кружится по оси?

    • @frontend-pashtet
      @frontend-pashtet  Рік тому

      Привет. Тут надо смотреть код. Можешь зайти к нам на сервер в дискорде. Я там отвечаю на технические вопросы. Плюс ребята с сервера помогали. Ссылка в описании есть

    • @frontend-pashtet
      @frontend-pashtet  Рік тому

      discord.gg/tJxdsvHtBX

  • @Хаято-з2и
    @Хаято-з2и 2 роки тому

    Кстати через 2 дня проводится джем по разработке игр на годот
    Ну как будешь учавствовать?

    • @frontend-pashtet
      @frontend-pashtet  2 роки тому

      Если ты про Godot Wild Jam, то да, буду участвовать. Он каждый месяц проводится. Я участвовал в нем где-то год назад. Буду стримить его в эти выходные.

    • @Хаято-з2и
      @Хаято-з2и 2 роки тому

      @@frontend-pashtet о это Круто я тоже буду учавствовать Не знай правда смогу ли сделать игру за 9 дней и честно говоря это мой первый джем где я буду учавствовать.
      Ну крч получится сделать игру хорошо если нет надо побольше поучится

    • @frontend-pashtet
      @frontend-pashtet  2 роки тому

      Воу. Это вообще прикольно, что мы участвуем. Удачи в джеме. В любом случае это будет хороший опыт. Я уверен в этом.

  • @lol-et1fz
    @lol-et1fz 3 роки тому

    У меня нет слов.......КРАСВА ))))))

  • @LeviiParen
    @LeviiParen 2 роки тому

    Так держать! Удачи тебе

  • @wexordante
    @wexordante Рік тому

    Как лучше сделать пошаговую стратегию в 3 d ? Этот скрипт похож на RTS скрипт, не могу додуматься. Везде в 2 d, я слишком чайник чтобы понять. Да и Velocity везде было (

    • @frontend-pashtet
      @frontend-pashtet  Рік тому +2

      Я делал пошаговую стратегию в 3D. Была куча стримов на канале. Код игры открыт.
      Код под Godot 3 github.com/drxwat/goblins-game-gd
      Заходи в дискорд, если будут вопросы

    • @wexordante
      @wexordante Рік тому

      @@frontend-pashtet спасибо

  • @papadenteam
    @papadenteam Рік тому

    Спасибо! Отлично видео!

  • @captaingames12
    @captaingames12 Рік тому

    я как-то не понимаю как это работает. Если мы объекту задаем каждый фрейм координату по "х" допустим 10, не должен ли он дойти до этой координаты и оставаться на том же месте?

    • @frontend-pashtet
      @frontend-pashtet  Рік тому

      В этом и суть, что ты задаёшь на 10, а меняешь постепенно. Например, 1,2,3,4 и так далее. Каждый фрейм насчитываешь значение, которое прошло тело.

    • @captaingames12
      @captaingames12 Рік тому

      @@frontend-pashtet хммм. А как тогда при управлении персонажем он двигается
      extends KinematicBody2D
      const SPEED = 100
      const FRICTION = 120
      var velocity = Vector2.ZERO
      func _physics_process(delta):
      var input = Vector2.ZERO
      input.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
      input.y = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
      input = input.normalized()
      if input != Vector2.ZERO:
      velocity = input * SPEED
      else:
      velocity = velocity.move_toward(Vector2.ZERO, FRICTION*delta)
      print(velocity)
      velocity = move_and_slide(velocity)
      например с помощью этого кода. Не должен ли он достигнуть 100 и больше не двигаться?

  • @neoddis_official
    @neoddis_official Рік тому

    Можете помочь пожалуйста с 2D игрой, я хочу сделать простой платформер и там добавить платформу которая будет двигаться к примеру от одного края к другому и так бессконечное количество времени. Я вообще не знаю как это сделать. Также у меня проблемы с персонажем а именно анимация смерти, тоесть когда его убивают то он падает и умирает ливитируя над землей и я пробовал много чего сделать, бессполезно я и ему добавлял 2 коллизию делал так что когда он жив то 2 коллизия выключена а когда умер то включена, не помогало может я в коде напартачил или незнаю, но прошу помогите я вообще запутался... (я только начал учиться своими силами в этой сфере создавания игр и толком нечего не знаю.)
    Код персонажа:
    extends KinematicBody2D
    const gravity = 600.0
    const walk_speed = 200
    const Floor = Vector2(0, -1)
    const PLASMA = preload("res://Plasma.tscn")
    var is_firing = false
    var is_dead = false
    var direction = 1
    var motion = Vector2()
    var jump = 450
    func die():
    is_dead = true
    motion.x = 0
    $AnimatedSprite.play("die")
    $PlayerCollisionShape2D.set_deferred("disabled", true)
    $DeadPlayerCollision.set_deferred("disabled", false)
    func _physics_process(delta):
    if is_dead == true:
    motion.x = walk_speed * direction
    $AnimatedSprite.play("walk")
    if position.y > 810:
    position.y = 0
    if is_firing == true:
    return
    if Input.is_action_pressed("ui_left") and not Input.is_action_pressed("ui_right"):
    motion.x =-walk_speed
    $AnimatedSprite.flip_h = true
    $Position2D.position.x = abs($Position2D.position.x) * -1
    if is_on_floor():
    $AnimatedSprite.play("walk")
    elif Input.is_action_pressed("ui_right") and not Input.is_action_pressed("ui_left"):
    motion.x = walk_speed
    $AnimatedSprite.flip_h = false
    $Position2D.position.x = abs($Position2D.position.x)
    if is_on_floor():
    $AnimatedSprite.play("walk")
    else:
    motion.x = 0
    if is_on_floor():
    $AnimatedSprite.play("idle")

    if Input.is_action_pressed("ui_up") and is_on_floor():
    motion.y = -jump
    $AnimatedSprite.play("jump")

    if Input.is_action_just_pressed("ui_accept") && is_firing == false && is_on_floor():
    is_firing = true
    $AnimatedSprite.play("fire")
    motion.y += (gravity * delta)
    motion = move_and_slide(motion, Floor)
    func _on_AnimatedSprite_animation_finished():
    if $AnimatedSprite.animation == "fire":
    var plasma = PLASMA.instance()
    plasma.direction = sign($Position2D.position.x)
    plasma.position = $Position2D.global_position
    get_parent().add_child(plasma)
    is_firing = false
    Код зомби (который убивает игрока):
    extends KinematicBody2D
    const SPEED = 100
    const FLOOR = Vector2(0, -1)
    const GRAVITY = 970
    var velocity = Vector2()
    var direction = 1
    var is_alive = true
    var is_attacking = false
    func kill():
    is_alive = false
    velocity.x = 0
    $AnimatedSprite.play("dead")
    $CollisionShape2D.set_deferred("disabled", true)
    $DeadCollision.set_deferred("disabled", false)
    func _physics_process(delta):
    if is_alive == true && is_attacking == false:
    velocity.x = SPEED * direction
    $AnimatedSprite.play("walk")
    velocity.y += (GRAVITY * delta)
    velocity = move_and_slide(velocity, FLOOR)
    if is_on_wall():
    change_direction()

    func change_direction():
    direction *= -1
    $AnimatedSprite.flip_h = !$AnimatedSprite.flip_h
    $Area2D/CollisionShape2D.position.x *= -1
    func _on_Area2D_body_entered(body):
    if is_alive && "Player" in body.name:
    is_attacking = true
    $AnimatedSprite.play("attack")
    body.die()
    func _on_AnimatedSprite_animation_finished():
    if $AnimatedSprite.animation == "attack":
    is_attacking = false
    И код платформы который не хочет работать (точнее я не знаю как его написать, так скажем это больше огрызок от кода. ):
    extends StaticBody2D
    const SPEED = 100
    #const FLOOR = Vector2(0, -1)
    const GRAVITY = 5
    var Motion = Vector2.ZERO
    var direction = 1
    func _physics_process(delta):
    Motion.y += GRAVITY
    Motion = move_and_slide(Motion, Vector2.LEFT)
    а в коде с платформой проблема, тут функция move_and_slide выдает ошибку : built-in:12 - Parse Error: The method "move_and_slide" isn't declared in the current class. (и я тоже не знаю как её исправить...)
    эхх надеюсь кто то поможет.
    Мои связи:
    Дискорд: Fuzzy#1697 или Fers#2357
    буду ждать когда кто то ответит

  • @SOTRUDNICHEK_
    @SOTRUDNICHEK_ 3 роки тому +1

    О классно. Видео.

  • @nicsonkinellman8166
    @nicsonkinellman8166 8 місяців тому

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

  • @Alexey0328
    @Alexey0328 Рік тому

    А есть материалы о том как передвинуть объект из точки А в точку Б для совсем тупых?))) Есть начальная координата Х и финальная координата Х. Ваш код с кликами вообще не понял, а тот код что в учебнике Godot в разделе "Интерполяция" - не работает.

    • @frontend-pashtet
      @frontend-pashtet  Рік тому

      Привет. Заходи в дискорд, там проще будет код обсудить discord.gg/DFBdWxsBkA

    • @Alexey0328
      @Alexey0328 Рік тому

      @@frontend-pashtet спасибо что ответили, зашел посмотрел)). Но тут подумал, если я даже с такой ерундой справиться не могу, то, возможно, и не надо туда лезть. Пожалуй, rpg maker мой максимум))).

  • @RPTYPER
    @RPTYPER 9 місяців тому

    Помогите кто-нибудь! Пж! Мне пишут, что у меня таблутация неверная, а я не знаю, как исправить.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)

    • @shizoidniyshizoid
      @shizoidniyshizoid 6 місяців тому

      Таблутация? Табуляция?
      Короч, твой код должен иметь правильное количество табов, т.е. смотри:
      func***:
      if input.тырыпыры:
      vel.xzxz
      elif input.турупуру:
      vel.xzxz
      move_and_slide()
      Ну и соблюдай табуляцию - пробелы зло.

  • @MicrNerd
    @MicrNerd 3 роки тому

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

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому

      Спасибо. Есть куда расти. Но я немного стесняюсь в откровенный кринж

    • @MicrNerd
      @MicrNerd 3 роки тому

      @@frontend-pashtetПаштет у тебя такой пей-офф получается в шутках, как раз таки будто должен быть кринж, но не хватает смелости.

  • @gencrud
    @gencrud Рік тому

    Красота!

  • @na3try323
    @na3try323 Рік тому

    тысячный лайк!

  • @lol-et1fz
    @lol-et1fz 3 роки тому +1

    Идеально объяснил 👌)))

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому

      Даже Хейтер оценил 👌) achievement unlocked

    • @lol-et1fz
      @lol-et1fz 3 роки тому

      @@frontend-pashtet 😊 оккуратней я могу и захейтить )))
      От моего хейта досихпор блогеры не в себе )))

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому

      @@lol-et1fz понял

    • @lol-et1fz
      @lol-et1fz 3 роки тому

      @@frontend-pashtet 😑)))

  • @lol-et1fz
    @lol-et1fz 3 роки тому

    Ответь если не сложно....
    Какой движок лучше (обширнее) для создания 2D игры, GMS2 или Godot Engine?
    За ранее Благодарю за ответ ))))

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому +1

      GMS2 не пробовал. Так что, сравнивать не могу. Но для 2d Godot хорош. Вряд ли упрешься в какие-то технические ограничения. Но GMS2 по слухам тоже очень хороший движок. Так что, просто попробуй сделать прототип простой игры на обоих и потом поймёшь для себя, что комфортней

    • @lol-et1fz
      @lol-et1fz 3 роки тому

      @@frontend-pashtet хорошо, понял )))
      Дело в том что я хочу сесть на одном движке и не прыгать с движка на другой движок по тысячи раз )))

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому +2

      @@lol-et1fz ничего плохого в этом нет. Все движки похожи в базовых функциях. Разный опыт только обогатит твои навыки. Но смотри сам. Я в каком-то смысле тоже любитель одной технологии)

    • @lol-et1fz
      @lol-et1fz 3 роки тому

      @@frontend-pashtet ОК)

    • @lol-et1fz
      @lol-et1fz 2 роки тому

      @Re_ Ты имеешь ввиду что Godot лучше чем Unity ?

  • @haver2250
    @haver2250 Рік тому

    Честно говоря - всё равно ничего не понимаю, даже что такое дельта 😢

  • @ВторойкиборгЧеловек-Сидр

    Оказывается я был прав)

  • @egopos
    @egopos 3 роки тому +2

    для меня это слишком умно

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому +1

      Думаю, что-то не понятно из за темпа. Я старался как можно короче сделать видео

  • @Леонид-с5з
    @Леонид-с5з 2 місяці тому

    1:14
    3:03

  • @underwheelz
    @underwheelz 2 роки тому

    А че так можно было, я вобще новичек и не шарю тк гайдов очень мало. Я все такие плавные движения делал через аним плауер. Даже платформы на которые надо прыгать🤣

    • @frontend-pashtet
      @frontend-pashtet  2 роки тому +1

      Иногда animation player это то, что надо. Но теперь ты знаешь ещё пару способов 😁

    • @underwheelz
      @underwheelz 2 роки тому

      @@frontend-pashtet я открыл доку с векторами и физикой, вот уже 2ой час играюсь)

    • @frontend-pashtet
      @frontend-pashtet  2 роки тому

      @@underwheelz ага, это прикольная штука. Я так доигрался до игры про летающий глаз)

  • @zhamshidkaliev
    @zhamshidkaliev 3 роки тому +1

    нужно уроки для бегинеров , ничего не понятно)

    • @frontend-pashtet
      @frontend-pashtet  3 роки тому

      Стримы наверное попроще будут. Там и динамика другая.

    • @frontend-pashtet
      @frontend-pashtet  2 роки тому

      @Re_ ну да, для начинающих важен интерфейс, запись экрана с кликами. Думаю, надо сделать такой урок

    • @frontend-pashtet
      @frontend-pashtet  2 роки тому

      @Re_ судя по комментариям, у тебя хорошая подготовка. Уверен, ты очень быстро разберёшься с Godot.

  • @neoddis_official
    @neoddis_official Рік тому

    Я понял что я нечего не понял.

    • @frontend-pashtet
      @frontend-pashtet  Рік тому +1

      На этом мои полномочия все)
      Ну а если серьезно, то тема сложная. Тут и векторная алгебра, и интерполяции, и знания функций Godot. Так что, это норм, если не сразу разберёшься.

  • @ВасилийБабаев-ж2г
    @ВасилийБабаев-ж2г 2 роки тому +1

    Коммент 2

  • @Lu4ikSvetaVoTme
    @Lu4ikSvetaVoTme 2 роки тому

    Круто замонтажил