У вас ошибочка в картинке на 1:18. _physics_process() срабатывает 60 раз в секунду и не зависит от FPS, а вот _process уже выполняется каждый кадр и может быть быстрее или медленней в зависимости от выдаваемого FPS .
Да, конечно. Народ делает сетевые игры. Вот тут есть пример и библиотека для упрощения разработки. Правда все на английском heroiclabs.com/blog/tutorials/godot-fishgame/index.html
Блин ошибка кода пж подскажи что тут не так Var damaged = { "damaged":20, "is_fire_damage:true, "orydie":"arbalet" } funk _ready() var damag = damaged["damaged"]: if damag != 10: damag + 20 И блин удобнобы было если бы была группа вк туда бы можно было бы выкладывать ошибки и все что связано с годот
Привет. Не очевидно, какая тут ошибка. Что Godot пишет при запуске кода? Что ты хочешь, чтобы получилось? Есть дискорд сервер discord.gg/tJxdsvHtBX и чат в телеграмм t.me/frontend_pashtet_chat
Привет. Тут надо смотреть код. Можешь зайти к нам на сервер в дискорде. Я там отвечаю на технические вопросы. Плюс ребята с сервера помогали. Ссылка в описании есть
Если ты про Godot Wild Jam, то да, буду участвовать. Он каждый месяц проводится. Я участвовал в нем где-то год назад. Буду стримить его в эти выходные.
@@frontend-pashtet о это Круто я тоже буду учавствовать Не знай правда смогу ли сделать игру за 9 дней и честно говоря это мой первый джем где я буду учавствовать. Ну крч получится сделать игру хорошо если нет надо побольше поучится
Как лучше сделать пошаговую стратегию в 3 d ? Этот скрипт похож на RTS скрипт, не могу додуматься. Везде в 2 d, я слишком чайник чтобы понять. Да и Velocity везде было (
Я делал пошаговую стратегию в 3D. Была куча стримов на канале. Код игры открыт. Код под Godot 3 github.com/drxwat/goblins-game-gd Заходи в дискорд, если будут вопросы
я как-то не понимаю как это работает. Если мы объекту задаем каждый фрейм координату по "х" допустим 10, не должен ли он дойти до этой координаты и оставаться на том же месте?
@@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 и больше не двигаться?
Можете помочь пожалуйста с 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 буду ждать когда кто то ответит
А есть материалы о том как передвинуть объект из точки А в точку Б для совсем тупых?))) Есть начальная координата Х и финальная координата Х. Ваш код с кликами вообще не понял, а тот код что в учебнике Godot в разделе "Интерполяция" - не работает.
@@frontend-pashtet спасибо что ответили, зашел посмотрел)). Но тут подумал, если я даже с такой ерундой справиться не могу, то, возможно, и не надо туда лезть. Пожалуй, rpg maker мой максимум))).
Помогите кто-нибудь! Пж! Мне пишут, что у меня таблутация неверная, а я не знаю, как исправить.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)
Таблутация? Табуляция? Короч, твой код должен иметь правильное количество табов, т.е. смотри: func***: if input.тырыпыры: vel.xzxz elif input.турупуру: vel.xzxz move_and_slide() Ну и соблюдай табуляцию - пробелы зло.
GMS2 не пробовал. Так что, сравнивать не могу. Но для 2d Godot хорош. Вряд ли упрешься в какие-то технические ограничения. Но GMS2 по слухам тоже очень хороший движок. Так что, просто попробуй сделать прототип простой игры на обоих и потом поймёшь для себя, что комфортней
@@lol-et1fz ничего плохого в этом нет. Все движки похожи в базовых функциях. Разный опыт только обогатит твои навыки. Но смотри сам. Я в каком-то смысле тоже любитель одной технологии)
А че так можно было, я вобще новичек и не шарю тк гайдов очень мало. Я все такие плавные движения делал через аним плауер. Даже платформы на которые надо прыгать🤣
На этом мои полномочия все) Ну а если серьезно, то тема сложная. Тут и векторная алгебра, и интерполяции, и знания функций Godot. Так что, это норм, если не сразу разберёшься.
У вас ошибочка в картинке на 1:18. _physics_process() срабатывает 60 раз в секунду и не зависит от FPS, а вот _process уже выполняется каждый кадр и может быть быстрее или медленней в зависимости от выдаваемого FPS .
Хороший поинт. Закрепляю коммент. Спасибо за поправку.
А ты хорош!)) Прям лучший контент по теме разработки игр в RU сегменте. Спасибо и удачи тебе!
Это очень приятный комментарий. Спасибо за поддержку)
Очень качественный урок и крутой проект для урока, прям ответственно к делу подошёл. Жду новые видосы!
Подача огонь, ты даже заморочился со сценой! :)
Вот что я называю "полезное видео". Не зря подписался на тебя.
Очень рад это слышать. Спасибо за комментарий.
Я не знал что 6 минут будут длится так долго!!!!!
Спасибо тебе большое за видео,я наконец-то понял как двигать персонажа..
Немного не понятно но очень интересно
крутой видос и крутую сцену подготовил
Оно того стоило!
(Я про отсутствие стрима)
А так полезный видос хоть и не все поймут его суть а ты меня на одну идею натолкнул
Хороший видос, классная подача! Продолжай вот в таком же духе)
Постараюсь) Спасибо за комментарий
спасибо большое буду вникать
✊
Есть ещё lerp, помним, любим
lerp это и есть linear_interpolate
@@egopos ну так в видео про эту функцию не слова не было просто.)
Красава, хороший материал.
коротко и не понятно
Я щяс перешел на этот движок есть такой вопросик можно ли сделать мультиплеер на движке
Да, конечно. Народ делает сетевые игры. Вот тут есть пример и библиотека для упрощения разработки. Правда все на английском heroiclabs.com/blog/tutorials/godot-fishgame/index.html
1:34 на этом моменте я сомневаюсь что смогу делать игры
В клиент-серверной игре наверняка к этому всему добавятся свои нюансы
У меня болит голова))
Так и должно быть)
Блин ошибка кода пж подскажи что тут не так
Var damaged = {
"damaged":20,
"is_fire_damage:true,
"orydie":"arbalet"
}
funk _ready()
var damag = damaged["damaged"]:
if damag != 10:
damag + 20
И блин удобнобы было если бы была группа вк туда бы можно было бы выкладывать ошибки и все что связано с годот
Привет. Не очевидно, какая тут ошибка. Что Godot пишет при запуске кода? Что ты хочешь, чтобы получилось?
Есть дискорд сервер discord.gg/tJxdsvHtBX
и чат в телеграмм
t.me/frontend_pashtet_chat
Инглиш подтяни, какой funk? Правильно func писать. Также вместо damage какой-то damag написан... так дело не пойдёт.
*Чувак, спасибо тебе!*
что, если я переписал первый пример, и при нажатии на клавишу объект просто кружится по оси?
Привет. Тут надо смотреть код. Можешь зайти к нам на сервер в дискорде. Я там отвечаю на технические вопросы. Плюс ребята с сервера помогали. Ссылка в описании есть
discord.gg/tJxdsvHtBX
Кстати через 2 дня проводится джем по разработке игр на годот
Ну как будешь учавствовать?
Если ты про Godot Wild Jam, то да, буду участвовать. Он каждый месяц проводится. Я участвовал в нем где-то год назад. Буду стримить его в эти выходные.
@@frontend-pashtet о это Круто я тоже буду учавствовать Не знай правда смогу ли сделать игру за 9 дней и честно говоря это мой первый джем где я буду учавствовать.
Ну крч получится сделать игру хорошо если нет надо побольше поучится
Воу. Это вообще прикольно, что мы участвуем. Удачи в джеме. В любом случае это будет хороший опыт. Я уверен в этом.
У меня нет слов.......КРАСВА ))))))
Так держать! Удачи тебе
Как лучше сделать пошаговую стратегию в 3 d ? Этот скрипт похож на RTS скрипт, не могу додуматься. Везде в 2 d, я слишком чайник чтобы понять. Да и Velocity везде было (
Я делал пошаговую стратегию в 3D. Была куча стримов на канале. Код игры открыт.
Код под Godot 3 github.com/drxwat/goblins-game-gd
Заходи в дискорд, если будут вопросы
@@frontend-pashtet спасибо
Спасибо! Отлично видео!
я как-то не понимаю как это работает. Если мы объекту задаем каждый фрейм координату по "х" допустим 10, не должен ли он дойти до этой координаты и оставаться на том же месте?
В этом и суть, что ты задаёшь на 10, а меняешь постепенно. Например, 1,2,3,4 и так далее. Каждый фрейм насчитываешь значение, которое прошло тело.
@@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 и больше не двигаться?
Можете помочь пожалуйста с 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
буду ждать когда кто то ответит
О классно. Видео.
ну осталось сделать классику и интстансить обьект после проигрывания анимации
А есть материалы о том как передвинуть объект из точки А в точку Б для совсем тупых?))) Есть начальная координата Х и финальная координата Х. Ваш код с кликами вообще не понял, а тот код что в учебнике Godot в разделе "Интерполяция" - не работает.
Привет. Заходи в дискорд, там проще будет код обсудить discord.gg/DFBdWxsBkA
@@frontend-pashtet спасибо что ответили, зашел посмотрел)). Но тут подумал, если я даже с такой ерундой справиться не могу, то, возможно, и не надо туда лезть. Пожалуй, rpg maker мой максимум))).
Помогите кто-нибудь! Пж! Мне пишут, что у меня таблутация неверная, а я не знаю, как исправить.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)
Таблутация? Табуляция?
Короч, твой код должен иметь правильное количество табов, т.е. смотри:
func***:
if input.тырыпыры:
vel.xzxz
elif input.турупуру:
vel.xzxz
move_and_slide()
Ну и соблюдай табуляцию - пробелы зло.
Отличное видео, прям то, что надо. Тебе стоит делать шутки кринжовыми чтобы зубы сводило.
Спасибо. Есть куда расти. Но я немного стесняюсь в откровенный кринж
@@frontend-pashtetПаштет у тебя такой пей-офф получается в шутках, как раз таки будто должен быть кринж, но не хватает смелости.
Красота!
тысячный лайк!
Идеально объяснил 👌)))
Даже Хейтер оценил 👌) achievement unlocked
@@frontend-pashtet 😊 оккуратней я могу и захейтить )))
От моего хейта досихпор блогеры не в себе )))
@@lol-et1fz понял
@@frontend-pashtet 😑)))
Ответь если не сложно....
Какой движок лучше (обширнее) для создания 2D игры, GMS2 или Godot Engine?
За ранее Благодарю за ответ ))))
GMS2 не пробовал. Так что, сравнивать не могу. Но для 2d Godot хорош. Вряд ли упрешься в какие-то технические ограничения. Но GMS2 по слухам тоже очень хороший движок. Так что, просто попробуй сделать прототип простой игры на обоих и потом поймёшь для себя, что комфортней
@@frontend-pashtet хорошо, понял )))
Дело в том что я хочу сесть на одном движке и не прыгать с движка на другой движок по тысячи раз )))
@@lol-et1fz ничего плохого в этом нет. Все движки похожи в базовых функциях. Разный опыт только обогатит твои навыки. Но смотри сам. Я в каком-то смысле тоже любитель одной технологии)
@@frontend-pashtet ОК)
@Re_ Ты имеешь ввиду что Godot лучше чем Unity ?
Честно говоря - всё равно ничего не понимаю, даже что такое дельта 😢
Оказывается я был прав)
В чем?)
@@frontend-pashtet гайд по ходьбе)
@@ВторойкиборгЧеловек-Сидр ахах) Это он самый
для меня это слишком умно
Думаю, что-то не понятно из за темпа. Я старался как можно короче сделать видео
1:14
3:03
А че так можно было, я вобще новичек и не шарю тк гайдов очень мало. Я все такие плавные движения делал через аним плауер. Даже платформы на которые надо прыгать🤣
Иногда animation player это то, что надо. Но теперь ты знаешь ещё пару способов 😁
@@frontend-pashtet я открыл доку с векторами и физикой, вот уже 2ой час играюсь)
@@underwheelz ага, это прикольная штука. Я так доигрался до игры про летающий глаз)
нужно уроки для бегинеров , ничего не понятно)
Стримы наверное попроще будут. Там и динамика другая.
@Re_ ну да, для начинающих важен интерфейс, запись экрана с кликами. Думаю, надо сделать такой урок
@Re_ судя по комментариям, у тебя хорошая подготовка. Уверен, ты очень быстро разберёшься с Godot.
Я понял что я нечего не понял.
На этом мои полномочия все)
Ну а если серьезно, то тема сложная. Тут и векторная алгебра, и интерполяции, и знания функций Godot. Так что, это норм, если не сразу разберёшься.
Коммент 2
Круто замонтажил