Платформер 2D: Камера Camera2D GODOT 4.1 | Урок P009 и L004

Понравились уроки? Поддержите автора на Бусти: boosty.to/godotru
- Камера в 2D играх
- Как добавить, какие есть свойства
Почитайте сами docs.godotengine.org/ru/stabl...
- Как автоматически установить лимиты камеры по размеру TileMap на вашем уровне
ДОМАШКА:
- Рассчитайте значения переменных, где будете хранить ограничение для передвижения игрока (чтобы он не мог выйти из уровня слева, справа... сверху), а также нижнюю границу, где его ждет смерть.
Используйте эти переменные в коде игрока.
#godot #gdscript #tilemap #camera2d
Шаблон проекта на коней видео можно скачать здесь:
Lessons\P009 Camera2D Platformer2D\
github.com/D0NM/GodotRu
- скачать Godot - godotengine.org
- офиц. документация docs.godotengine.org/ru/stable/
- русскояз дискорд сервер / discord

Пікірлер: 25

  • @GODOTru
    @GODOTru9 ай бұрын

    ДОМАШКА в описании видео. Код её можно не публиковать. Напишите ваши идеи. И мы их обсудим.

  • @clide8414
    @clide84149 ай бұрын

    Может добавим в вашу игру паралаксный, бесконечный фон? Будет классно. А насчёт запрета выхода игрока за границы уровня. Ничего пока в голову не приходит. Я не опытный, я бы просто кодом останавливал его велосити Х, так он не выпадет, а по Y не так уж и страшно, но опять же это дело вкуса. Урок классный, спасибо.

  • @user-mw7dg6fc6r
    @user-mw7dg6fc6r4 ай бұрын

    Здравствуйте. Я, может, поздно, но у меня проблема. После ввода cell_quadrant_size игра начинает ломаться. Поможете? Может, это из-за обновления? По скрипту: кажись решил. В годо 4.2 эту функцию переименовали в rendering_quadrant_size

  • @user-ee6hc7nt6d
    @user-ee6hc7nt6d9 ай бұрын

    А можете потом показать как сделать кликер

  • @erelshinzhin5224

    @erelshinzhin5224

    9 ай бұрын

    Сделай обычную кнопку и счётчик с количеством кликов на нее А считывать нажатие можно сигналом pressed

  • @G_k3p2
    @G_k3p28 ай бұрын

    У меня появилась проблема, почему-то при переходе на следующий уровень игра крашится на моменте var r = tilemap.get_used_rect(). а про домашку я сделал с самого начала стены вокруг уровня P.S. понял проблему почему крашится я не поставил свойство TileMap

  • @GODOTru

    @GODOTru

    8 ай бұрын

    Снова рад, когда проблему нашли сами. ЭТо очень полезно для своих проектов.

  • @Legion2420
    @Legion24209 ай бұрын

    Я начал учить годот зашел в тг в чат по годот на руском спросил за сколько времени можно выучить годот на языке C# без гдскрипт. мне сказали это не смешно и забанили круто теперь я полностю разочерован в годоте и буду учить юнити

  • @GODOTru

    @GODOTru

    9 ай бұрын

    Надо просто изучить С# без всякого GODOT. А это не быстро... И все... Если знаешь Godot + GDScript то знаешь функции движка. На C# чуть больше кода придется писать, зато все будет работать на макс скорости.

  • @user-to5el1yk1s

    @user-to5el1yk1s

    9 ай бұрын

    Вообще странный вопрос "За сколько"... Всё от тебя зависит. Бери и учись. И если знаешь шарп, что что мешает выучить дополнительно годо? Я год назад, в 40 лет в первые чтолкнулся с программированием, и горю желанием выучить как можно больше языков, сколько бы это не длилось.

  • @mentha654

    @mentha654

    9 ай бұрын

    Я вступила в эту группу, правильно ответила на что-то типа капчи и меня тоже забанили

  • @GODOTru

    @GODOTru

    9 ай бұрын

    ​@@mentha654 наверно и я на эту капчу что-то отвечал. Или вступил раньше... Ну что ж, придется мне удалить ссыолку на вроде бы самую большую группу Годот на русском ((( Действтиельно. Для новичков такие правила группы это неудобно.

  • @user-to5el1yk1s

    @user-to5el1yk1s

    9 ай бұрын

    @@mentha654 там вроде 2 минуты даётся для ответа. Может опоздала?

  • @ram0973
    @ram09738 ай бұрын

    У меня почему-то при переходе на 2 уровень камера перестаёт ходить за игроком. P.S. разобрался, просто добавил $Camera2D.make_current()

  • @GODOTru

    @GODOTru

    8 ай бұрын

    Такое может быть, если предыдущая камера осталась (например инстанс игрока с прошлого уровня не удалён!) то есть где-то в скрипте ошибка

  • @mrmegachell
    @mrmegachell6 ай бұрын

    У меня камера совсем не работает. На маленьких слетает куда то, а на больших неправильно делает границы. точно такой же код. extends CharacterBody2D const SPEED = 300.0 @export var tilemap: TileMap @onready var Anim: AnimatedSprite2D = $AnimatedSprite2D const JUMP_VELOCITY = -400.0 var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") func _ready() -> void: var r = tilemap.get_used_rect() var vp = tilemap.get_viewport_rect() var qs = tilemap.cell_quadrant_size $Camera2D.limit_left = r.position.y * qs + (qs * 2) $Camera2D.limit_top = r.position.x * qs $Camera2D.limit_right = $Camera2D.limit_left + r.size.x * qs $Camera2D.limit_bottom = $Camera2D.limit_top + r.size.y * qs $Camera2D.limit_top = min($Camera2D.limit_top, $Camera2D.limit_bottom -vp.size.y)

  • @GODOTru

    @GODOTru

    6 ай бұрын

    var vp = get_viewport() вот так сделай, изменилось что-то? Я сегодня мини-урок запишу про камеру. Выложу. чуть проще сделаю.

  • @GODOTru

    @GODOTru

    6 ай бұрын

    откуда у вас появилось это в коде? + (qs * 2) удОлите ))

  • @user-to5el1yk1s
    @user-to5el1yk1s9 ай бұрын

    "Почитайте сами" Шутник 😂 Ьы ж по этому и тут потому что там нифига не понимаем.... В общем У меня почему то камера вниз улетает за экран. Понять не могу проблему extends CharacterBody2D const SPEED = 200.0 const JUMP_VELOCITY = -400.0 @onready var anim_sprite: AnimatedSprite2D = $AnimatedSprite @onready var jump_sound = $JumpSound @onready var gameover_sound = $GameOver @onready var cam = $Camera2D @export var tilemap : TileMap var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") func _ready() -> void: var r = tilemap.get_used_rect() var vp = tilemap.get_viewport_rect() var qs = tilemap.cell_quadrant_size cam.limit_left = r.position.x * qs cam.limit_top = r.position.y * qs cam.limit_right = cam.limit_left + r.size.x * qs cam.limit_bottom = cam.limit_top + r.size.y * qs cam.limit_top = min(cam.limit_top, cam.limit_bottom - vp.size.y) всё так же вроде

  • @GODOTru

    @GODOTru

    9 ай бұрын

    1) Я не шучу с такими советами. 2) Есть полностью на русском документация для Godot 3.5 там все похоже. 3) Ты хэшируешь самеру в переменной cam. И вероятно там происходит глюк Годо.... А я в этой же функции _ready() она запускается, когда все посчитано, напрямую пишу в камеру. Вероятно проблема где-то еще. Не в _ready()

  • @GODOTru

    @GODOTru

    9 ай бұрын

    + я не вижу как у тебя сделан tileset. Ну, разбор закончен. А к камере я еще вернусь в отдельном уроке про сплит-скрин для мультиплейера.

  • @user-to5el1yk1s

    @user-to5el1yk1s

    9 ай бұрын

    @@GODOTru Я пробовал вместо переменной и прямую ссылку на камеру, то же самое. Единственное, если на нулевой верхней точке ставлю тайл, она относительно нормально показывает. Ито ниже чем надо бы

  • @mrmegachell

    @mrmegachell

    6 ай бұрын

    точно такая же проблема

  • @GODOTru

    @GODOTru

    6 ай бұрын

    @@mrmegachellпрямо сейчас я по ссылке в описании скачал проект Lessons \ P009 Camera2D Platformer2D ты не забыл игроку на каждой сцене в Player добавить Tilemap со сцены уровня? И да, в tilemap должны быть настроены collision всех тайлов, которыми рисуешь уровень.