Godot урок 4 (TileMap + анимация) Курс для Новичков: Создание Игр С нуля,
Вставка
- Опубліковано 14 сер 2023
- "Быстрый старт с Godot: Создание игр с удовольствием! 🎮🚀 Преодолейте начальные барьеры и начните свою игровую историю. Присоединяйтесь к нам, чтобы воплотить свои идеи в реальность!"
Группа в Telegram:
t.me/+6zyiuofwIhM4NGNl
Ты лучший, спасибо за уроки. Без лишней воды и все понятно, жму руку через экран
Спасибо) жму руку в ответ)
blb yfe[qe
В смене направления можно убить сразу двух зайцев, сделав проверку в направлении, и заодно это избавит от того, что после поворота персонаж снова возвращается в положение "направо":
if direction:
velocity.x = direction * SPEED
if direction==1:
anim.flip_h=false
else:
anim.flip_h=true
anim.play("Run")
Или сделав условие выбора направления в одну строку тернарным оператором:
anim.flip_h=false if direction==1 else true, т.е. отзеркаливание всегда будет отключено до той поры, пока мы не сменим направление на лево.
Огромное спасибо за уроки!!!
Спасибо за информацию)
if direction==1:
anim.flip_h=false
anim.play("Run") -- Ты забыл тут указать, а так спасибо)
else:
anim.flip_h=true
anim.play("Run")
Условие direction можно написать прямо после знака равенства:
AnimatedSprite.FlipH = direction < 0;
Так мы трёх зайцев убиваем)
но тогда в прыжке направление не меняется.
Спасибо тебе большое, долго выбирал между Юнити и годо, но благодаря тебе я определился с выбором, так как ты единственный кто +- нормально объяснил, что к чему
Спасибо за высокую оценку)
Тоже такая же история 😁единственный видео туториал где у меня всё получается и я иду вперёд, я в этом Unity три часа пытался заставить треугольник прыгать и бегать, а тут уже на 6 уроке
Another excellent presentation. Молодец! Спасибо!
Отличный гайд. Спасибо большое!
Спасибо 👍
Всё очень понятно и лаконично )) Даришь надежду что и я смогу сделать что-то Играбельное))))) Спасибо ))
Конечно сможешь!)
Спасибо, за видео! 👍🏻 понятно и четко. Очень ждём новые выпуски
Спасибо за отзыв)
Спасибо за урок! Очень понятно и доступно!
Спасибо
Спасибо! Супер урок!
Спасибо)
хорошее объяснение, спасибо за урок!
Спасибо за отзыв!
Спасибо за курс отец хорошо объясняешь
Спасибо😂
@@GameCrafter_GD Помоги пж все анимации не работают только первый кадр используется
Да, человеку далёкому от программирования становится трудновато) наверное придётся вести конспект, дабы быстрее запомнить работу со скриптами. Благодарю за урок!
Не переживай) я и сам далеко не программист) можно просто изучать только те темы которые нужны для текущей задачи, так и изучишь все без боли и страданий 👍
Большая просьба продолжай видео делать дальше очень хорошо заходят
Обязательно буду продолжать, спасибо
Отличные уроки! Было бы не плохо если бы ещё и уроки по 3d были!
спасибище !
Спасибо большое
братанчик ты мне жизнь спас,
я долго не мог добавить анимацию
Рад что помог)
Крутой туториал)
Спасибо
Спасибо, всё чётко сработало, как и на видео! Я рад)
PS: этот спрайтсэт надо было не по 16px резать, а по 24px ;)
Спасибо за отзыв
Спасибо
Пожалуйста 👍
Уроки шикарные, максимально информативно рассказываешь)
Единственное, не могу разобраться с анимацией. В скрипте все также как в видео, но анимация бега тупо не подрубается. Перс как бегал с idle анимацией, так и бегает. Уже все перепробовал, но разобраться не получилось(
Спасибо за оценку) заходи в телеграмм группу и скидывай туда скрины, там поможем чем сможем)
наконец появился годный курс!!! СПАСИБО !!!!!
Спасибо
искал золото, а нашел алмаз)
👍
Спасибо
А как сделать так чтоб сначала одна анимация за тем другая ( тойсть при нажатии движения сначала проигрывалась сначала стартующя анимация а потом уже и постоянная а при прекращении движения останавливающая а потом бездествие) или чтоб через время бездействия проигрывалась анимация ждущего персонажа!
тут же наверно неплох добавить анимацию приземления. С спрайтами +- все понятно. А вот с условием проигрывания не очень. В какой момент ее нужно проигрывать как это условие правильно записать ? Брать какое-то конкретно значение когда велосити по Y равно какое-то небольшое значение отличное от 0 ... или нужно как-то указывать переход по значению велосити Y перед тем как оно стало 0 ... Наверно как-то сумбурно объясняю, ну уж как могу :)
Суть уловил вроде) с анимацией приземления немного запарка, для таких вещей в godot есть animation tree, либо можно использовать state machine, в этом курсе про animation tree я не рассказывал, но в следующем проекте точно буду. Через state machine, можно создать отдельный state для приземления, и включать его после анимации падения.
14:17 При флипе по оси Х и У персонаж сильно уходит в сторону, как сделать так, чтобы он как у тебя поворачивался на месте?
Анимация Fall в конце кода и урока не дает возможности воспроизводится анимации Jump. Как исправить?
❤
👍
спасибо за урок, но у меня проблема, сделал как в видео, но в камере тайл сет (как картинка с колизиями все нормально) прилеплен к камере, а не остается на своем месте
а все разобрался, кому интересно просто перетащил тайл меп в иерархии под level
Спасибо за гайд, но на 15:43 там где надо написать else как только пишу двоеточие всё в итоге ломается.
Привет какие компоненты скачать и где , не высвечивается некоторые скрипты как у тебя помогите
на A,D удобнее, чем на стрелках
var direction = 0
if Input.is_key_pressed(KEY_A) :
direction = -1
elif Input.is_key_pressed(KEY_D) :
direction = 1
else :
direction = 0
Да дальше в роликах мы это изменим
Сейчас в tilemap коллизий по другому настраивается, я не могу понять как
А если почему то не получается создать новую анимацию, потому что все кнопки серые и причём старую тоже редактировать нельзя, которую уже сделал?
Ого с таким не сталкивался, скинь скрины в телеграмм или дискорд, там разберемся
Чудесный урок спасибо огромное😊😊но у меня есть одна проблема я вставил шаблон движения но когда запустил он не двигался(у меня мобильная версстя годота)?
Спасибо за отзыв) вообще я бы не рекомендовал разрабатывать игру на телефоне) дешевенький комп будет гораздо удобнее. Но это уже тебе выбирать. Стандартное управление для игрока заточено под клаву. Тебе чтобы на телефоне тестировать нужны кнопки для тач скрина. В одном из роликов мы их добавляем
@@GameCrafter_GD Ну я планировал переходить на комп и неплохо было что то знать.Спасибо
блин урок хороший но как поменять клавиши для ходьбы
также как у автора объявил работу с аним спрайтом.. он говорит что так нельзя.. пишите вот команду как у автора спереди написать.. но у написал. и это система считает ошибкой
А.. он так будет ругаться.. Если вы забыли указать какая анимация идет по умолчанию.
Здарова , че делать ,если задний фон сильно приближен ?
Привет, а что делать если все анимации вроде работают, а вот анимация прыжка не воспроизводится?
UPD: Всё, не надо, уже исправил!
Что делать если пишу anim.play("run") и ошибка Unexpected "Identifier" in class body
Окей вопросс у меня на моменте где ты перетаскиваешь Анимейтед спрайт 2д не получается повторить за тобой у меня вылазит ошибка что невозможно перетащить узлы не использующиеся в этой сцене а у меня все так как у тебя 😮💨🌀
Скинь мне скрин экрана со скриптом и чтоб узлы видно было я гляну) если все повторял должно работать) куда тебе удобнее почту могу дать, ватсап или телегу?
@@GameCrafter_GD да я уже разобрался ток я так и не понял из-за чего это было
я когда лимиты камеры ставлю у меня остается только фон(на уровне)
Парни, если у вас не поворачивается персонаж, то посмотрите сколько отступов у вас перед if и elif. Сделайте ровно так же как у него
elif?
У меня такая проблема все как у него, но ничего не помогает
Привет, повторил код полностью как у тебя. Но вылезла проблема с анимацией бега, она начинается с задержкой и она очень быстрая, но бывают моменты когда долго бежишь анимация становится нормальной на короткий момент.
Привет 👋 судя по комменту создается впечатление что проблема не в коде а скорее в настройках анимации, в любом случае тебе лучше в телеграмме скрины с проблемой скинуть, иначе не понятно
Помогите, у меня почему то не получается рисовать через tilemap. Что делать?
На каждом последующем видео из курса, всё меньше лайков, многие не осилили наверное. Постараюсь пройти его до конца😅
Думаю это неизбежно) но и так намного больше чем я ожидал)
почему у меня не появляется анимаций в скопках?? подскажите говорит что команда play не подходит
Помогите пожалуйста,почему персонаж выбегает за границы и падает?
Здравствуйте спасибо за урок. Помогите пожалуйста мне нужно перевернуть(flip_h) collision shape 2d так же как анимацию. Не могу понять как.
Здравствуйте) можно ему в transform scale -1 сделать, но это не точно) если не получиться попробуйте в телеграмм группе этот вопрос задать
@@GameCrafter_GD спасибо, но это пе помогло нужно сдвинуть коллизию при беге влево. Так уж анимация велит
персонаж не двигается при, скрипте ( он двигается, только в воздухе, при прыжке) что делать:(@@GameCrafter_GD
время 15:10 а если при писвании в скрипте не появляется из всплывающего меню flip_h, а если даже прописать то не работает он , персонаж бежит спиной,,,,,в чем может быть дело? делал все досканально как вы, 1000 раз перепроверил все, не работает(
Выстроили сцену как в обучении, земля на уровне корней BG. Но когда запускается дебаг режим, земля оказывается по середине стволов фона. Это произошло после включения Zoom на камере. Подскажите куда копать? Как во время дебага увидеть уровень земли на уровне корней деревьев фона?
Можно в parallax layer в motion scale по Y 0 поставить тогда фон не должен смещаться по вертикали
В ParallaxBackground нужно поставить галку Ignore Camera Zoom в Scroll
16:43 можна взамен "elif" добавить "if" и будет один и тот же результат
так смысл это писать умник если "будет один и тот же результат"
а что если игрок застыл на одном кадре?
лучший!!!! но скажи пожалуйста как поменять управление на кнопки D и A английские чтобы удобней было
пожалуйста
,
Нужно использовать input map, дальше в роликах об этом есть
@@GameCrafter_GD а в каком именно ролике об этом говориться?
@@GameCrafter_GD аууу
@@JsDortgames уже точно не помню но после 7 должно быть
НЕ МОГУУУУ,ну получается его повернуть,что делать,скрипт написал а он задом ходит😢😢😢
я изначальной вписал
if direction == 1:
$AnimatedSprite2D.flip_h = false
и не парился (хотя пишу код на этом языке впервые)
4:24 Что то я не могу найти физик лэер в Годот помогите пожалуйста
Не смог увидеть разницу между Camera2D Process Callback Physics/Idle. Как было нормально так и осталось.
В айдл обычно есть небольшие подергивания когда камера нагоняет персонажа
Ребят, подскажите кто-нибудь пожалуйста, у меня проблема что персонаж всё равно размывается немного при движении, хотя поставил пункт Physics как автор в видео. У кого-то была такая проблема?
У меня, тоже не знаю
А остальная графика не размыта? В любом случае попробуй в телеге вопрос повторить
12:57 я эту часть смог без помощи туториала сделать
Очень крутой и познавательный урок, но когда я пишу аниматед спрайт фалс у меня выскакивает ошибка. Можешь помочь пожалуйста?
Попробую, напиши пожалуйста что именно ты пишешь или желательно скрин кода, а то так тяжело понять в чем именно ошибка, возможно просто опечатка
@@GameCrafter_GD у тебя есть дискорд?
если есть то вот мой exsiii@@GameCrafter_GD
@@exsiiibeats можешь в группу телеграм вступить, ссылка есть в описании канала, дискорд есть но редко им пользуюсь
окей, телеграмма нет но свой дискорд я кидал. Можешь помочь пж@@GameCrafter_GD
Спасибо за урок!
$AnimatedSprite2D.flip_h = true можно было добавить в 31-ю строку, чтобы не добавлять elif
Спасибо за коммент, учту)
Извините что делать если все было сделано потом вылетело и не работает анимация ходьбы, или сможете пожалуйста гдето написать или я вам
А все, заработало
Здраствуйте, у меня вышла вот такая ошибка - (Невозможно перетащить узлы, потому что скрипт 'player.gd(*)' не используется в этой сцене.) не могу понять каким образом эта ошибка вообще вышла ведь я все редактирую в сцене где персонаж и был создан :( буду заранее благодарна за ответ ( •̀ ω •́ )✧
Здравствуйте, уточните какой узел куда вы хотите перетащить?
@@GameCrafter_GD AnimatedSprite2D в скрипт где делается основа перса
@@theworldofmurderers1195 заходите в телеграмм группу, и туда скиньте скрины чтоб было видно какой скрипт у вас открыт и из какой сцены вы берете нод, иначе долго можно разбираться)
я вроде писал по гайду и когда надо было написать скрипт с анимацией при беге на каждое действие была ошибка. что делать
Тоже самое 😢 потом пересматривал и понел что забыл двоеточие поставить
Ребята ПОМОГИТЕ! Как редактировать Тайл в масштабе, если он сильно большой, и рисуется на пол карты?!
Посмотри справа , может есть размер или выбери внизу другой инструмент рисования
4:15 В новой версии данной вкладки нет, что делать? Ну или как минимум я не могу её найти
есть ,в инспекторе выбери вверху в списке tile set , а не tile map
Такая же проблема! Ты решил ее?
@@bloknot4956 выбери tile set справа вверху
А зачем сцена с персонажем должна быть ниже остальных в списке? На что это влияет ? Просто ради удобства поиска ?
Иерархией в древе сцен можно пользоваться как слоями в фотошопе, только здесь чем ниже в списке тем ближе к зрителю, можно использовать как альтернативный способ расстановки
@@GameCrafter_GD хм, аналогию понял. Тогда другой вопрос ) скажем хочу сделать так чтобы окружение ( фоновое изображение) было как на заднем плане с эффектом параллакса так и на переднем, ну условные кусты, как в LIMBO например или в lille nightmares, Songs of Armor etc. То для реализации подобного эффекта нужно просто создать еще 1 сцену для переднего плана и разместить ее в самом низу в дереве сцен ?
Что-то у меня так не получается Tile Map перекрывает слой с передним слоем в менеджере слоев. Это как-то иначе реализуется. 😀
@@SatoryL как я и сказал древо сцен можно использовать как альтернативу, так же можно использовать z order
Крутое видео👍 но я не понимаю почему у меня не прыгает игрок?
Спасибо за отзыв!) проверь условие для бега и айдла поставил?
@@GameCrafter_GD спасибо большое, по позже проверю)
@@GameCrafter_GDвсë работает, спасибо я просто думал прыжок стрелкой вверх а он пробелом😅
так на какую кнопку прыжок забинжен?
Пробел вроде
Когда пытаюсь перенсти назваение в код, пишет "Невозможно перетащить узлы, потому что скрипт 'player.gd' не используется в этой сцене.". Делал все так же с Анимацией но не получается сделать flip_h. Что не так?
Там важно какой открыт скрипт и какая сцена, если допустим открыт скрипт моба и сцена level, то если данного моба нет на сцене в него с этой сцены ничего не перенести
@@GameCrafter_GD Спасибо большое
Помогите мне пожалуйста у меня проблема с кодом. Там где if velosity.y == 0 :...... То оно мне говорит что велосити неправильно, хотя у нас версии одинаковые и код. Помогите мне пожалуйста я не могу понять что не так
Уже не нужно. Оказалось что это ошибся встроенный искатель ошибок
Слушайте, помогите пж! 15:40 написал как там, он не поворачивается. Что делать?
пожалуйста
всё я нашёл где был баг, пофиксил
у меня когда персонаж переворачиваться должен в скрипте, у меня пишет не верно
Скинь скрины в телегу
а если без тайлов? То как добавить физику?
Для статичных объектов хорошо подойдет нод static body 2d, просто коллизию ему добавь и всё
что делать когда я делал все так же как в уроке но моя земля находится посередине фона а не в самом низу
Попробуй в parallax layer в motion scale по Y поставить ноль, если не поможет то можно вручную сместить либо фон либо tilemap
а это не зависит от камеры? @@GameCrafter_GD
@@GameCrafter_GD я исправил оказывается в параллакс леер нужно было поставить галочку в игноре камеры
Привет, @darknestdead ! Там еще есть свойство follow Viewport, которое статично выставляет bg и отслеживание происходит как в видео автора.
У меня, в коде почему то не хочет определять слово anim :(
Anim это всего лишь название переменной которую мы сами выбираем как называть, скорее всего ты не создал её в начале скрипта или возможно создал её внутри другой функции или создал с опечаткой
Хмм, спасибо, я пересмотрю еще раз
почему у меня не работает прыжок? нажимаю на пробел и ничего не просиходит
Зайди в группу телеграмм, сделай снимок экрана с кодом и отправь в чат, там посмотрим
Почему я не могу добавить тайлы??
Пожалуйста пересмотрите ролик еще раз, возможно вы не добавили новый тайм в инспекторе
@@GameCrafter_GD Благодарствую
А почему когда я пишу if direction = -1: у меня выдаёт ошибку типо чё то не верно
@@fodiandzeromc9954 когда мы пишем равно 🟰 в условии, то есть после if, мы указываем == как бы подтверждая что оно равно, а уже когда приравниваем переменную к какому либо значению пишем 🟰 один раз, как то так
Понял спасибо затупил что то
я когда пишу код для анимации у меня игра после нажатия на play крашиться
уже пофиксил но теперь все анимации не работают только первый кадр используется
Скрины с кодом скинь в телеграмм
У меня перс не поварачиваеться хотя я все правильно сделал
Скорее всего съехал центр одного из нодов, либо mobs либо player, в телеграм группе эта проблема у многих была, там подробнее можно обсудить
я не могу повернуть персонажа, написав код где animatedsprite2d.flip_h = true оно либо не работает либо выдаёт ошибку expected indented block after "if" block
А что если я все прожал, но персонаж все равно дерганый
Трудно сказать, попробуй в телеге поспрашивать может кто сталкивался
Не работает коллизия, персонаж просто проваливается под землю. Делал всё по гайду.
Тоже делал все по гайду, коллизия работает. Либо не подогнал collision2d под размер персонажа, либо рисовал тайлами без коллизии. Ещё может быть, collision layer разный стоит
Если не получилось, в телеграмме свой вопрос продублируй, там разберемся
@@GameCrafter_GD Всё, я разобрался. Tilemap поставить выше игррка
:Unexpected "if" in class body.
:Unexpected "$" in class body.
:Unexpected "Identifier" in class body.
3 Ошибки не как не могу их решить
Нужно видеть код целиком, без контекста не понятно
@@GameCrafter_GD могу скинуть скриншот
@@GameCrafter_GD но тока там уже 1 ошибка ( Unexpected "Identifier" in class body. )
15:18 он не поворачивается, код 1 в 1(
спустя кучу времени и видео с канала Code with Max я нашел решение, вот:
if direction == -1:
$AnimatedSprite2D.set_flip_h(true)
elif direction == 1:
$AnimatedSprite2D.set_flip_h(false)
Рад что ты нашел решение, вот только не пойму почему мой вариант у тебя не сработал
У меня и это не помогло, пишет - Expected statement, found "elif" instead
А все разобрался в общем нужно в самом начале строчки поиграть с tab и настроить как на видео
нехрена не понятно но очень интересно
Втянешься со временем)
ПЖ помогите там где подключаем анимацию бега, я все как на ролике делаю а если стрелки нажать хоть 1 раз игра крашится и пишет Attempt to call 'play' in base 'null instance' on a null instance @GameCrafter_GD
СТОЙТЕ УЖЕ ПОФИКСИЛ, СПАСИБО!
if direction:
velocity.x = direction * SPEED
anim.play("run")
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
anim.play("idle")
if direction == -1:
$AnimatedSprite2D.flip_h = true
else:
$AnimatedSprite2D.flip_h = false
move_and_slide()
анимация бега не прекращается даже когда останавливается что делать
можете помочь , у меня ошибка вылазит
extends CharacterBody2D
const SPEED = 300.0
const JUMP_VELOCITY = -400.0
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
@onready var anim = $AnimatedSprite2D
func _physics_process(delta):
# Add the gravity.
if not is_on_floor():
velocity.y += gravity * delta
# Handle Jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction = Input.get_axis("ui_left", "ui_right")
if direction:
velocity.x = direction * SPEED
anim.play("Ran")
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
anim.play("Idle")
if direction == -1:
$AnimatedSprite2D.flip_h = true
elif direction == 1: (тут красным горит )
$AnimatedSprite2D.flip_h = false
move_and_slide()
Первое что бросается в глаза, это лишний отступ перед elif (if и elif они должны быть на одном уровне, а все что в них находится уже с отступом)
Ребята помогите пж что делать если скрипт на то что бы персонаж поворачивался не работает я его написал в точь в точь но ничего не работает я час на этот момент потратил и ничего не получаеться подскаите что делать вот сам скрипт:
extends CharacterBody2D
const SPEED = 300.0
const JUMP_VELOCITY = -400.0
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
@onready var anim = $AnimatedSprite2D
func _physics_process(delta):
# Add the gravity.
if not is_on_floor():
velocity.y += gravity * delta
# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction = Input.get_axis("ui_left", "ui_right")
if direction:
velocity.x = direction * SPEED
anim.play("walk")
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
anim.play("idle")
if direction == -1:
$AnimatedSprite2D.flip_h = true
if direction == 1:
$AnimatedSprite2D.flip_h = false
move_and_slide()
если найдите ошибки то сообщите пж или дайте советы что сделать что бы скрипт сработал.
у тебя скрипт неправильный ,сфоткай на ютубе в ролике скрипт и перепиши в точности, такой должен быть, или мой нижу скопируй
в чём именно он неправильный?@@sundeopanda
extends CharacterBody2D
const SPEED = 300.0
const JUMP_VELOCITY = -400.0
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
@onready var anim = $AnimatedSprite2D
func _physics_process(delta):
if not is_on_floor():
velocity.y += gravity * delta
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
anim.play ("Jump")
var direction = Input.get_axis("ui_left", "ui_right")
if direction:
velocity.x = direction * SPEED
if velocity.y == 0:
anim.play("Run")
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
if velocity.y == 0:
anim.play("Idle")
if direction == -1:
$AnimatedSprite2D.flip_h = true
elif direction == 1:
$AnimatedSprite2D.flip_h = false
move_and_slide()
@@UsuallyNoName сравни мой и свой, и увидишь
если вы читаете комменты помогите, у меня когда я пишу if direction == -1: и захожу в игру и иду налево перс все равно смотрит вп право хот идет налево (((
AnimatedSprite2D.flip_h = true