Научете как да контролирате прозореца за изглед на вашата игра с действия за панорамиране, мащабиране и мащабиране.
Една добре проектирана система от камери може да помогне за потапянето на играчите в света на играта и да даде по-добро усещане за местоположение. Камерата действа като очите на играча, позволявайки му да навигира и да взаимодейства със света на играта.
Създаването на система от камери в Godot е просто, но мощно. Можете лесно да настроите камерата да следва играча наоколо, да ограничите движенията му до зоната на играта и дори да добавите динамично мащабиране и мащабиране въз основа на събитията в играта.
Създаване на проста игра
Преди да започнете, трябва да създадете 2D игрален свят и герой във вашия Godot Game Engine които камерата може да следва.
Създайте нова 2D сцена и добавете a CharacterBody2D възел. Това ще служи като наш герой на играча. Вътре в CharacterBody2D добавете a CollisionShape2D и задайте формата му на RectangleShape2D да осигури физическото присъствие на играча в света.
Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.
Също така, вътре в CharacterBody2D, добавете a Sprite2D възел и присвоете изображението на спрайта на вашия играч към него. Създайте нов скрипт, прикачен към възела CharacterBody2D и добавете следния код:
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()if Input.is_action_pressed('ui_right'):
velocity.x += 1if Input.is_action_pressed('ui_left'):
velocity.x -= 1if Input.is_action_pressed('ui_down'):
velocity.y += 1if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
С този код персонажът на играча вече може да се движи във всичките четири посоки и ще се сблъска с платформите.
Внедряване на система за следваща камера
Следващата стъпка е да създадете камера, която следва движенията на играча. Добави Камера2D възел като дъщерен на вас CharacterBody2D възел. Това гарантира, че камерата винаги ще следва играча. За да направите движението по-плавно, активирайте свойството за изглаждане на позицията на Камера2D възел.
$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true
Внедряване на граници и ограничения на камерата
Често е важно да ограничите изгледа на играча до зоната на играта. Ако обаче не се справите правилно с това, камерата може да разкрие области, които са извън обхвата на играта. Те може да включват интервали или непълни области.
Godot предоставя лесен начин за задаване на ограничения на камерата и ограничаване на нейните движения в зоната на играта.
В Камера2D свойства на възела, има четири променливи: ограничение_отляво, limit_top, ограничение_право, и ограничение_дъно. Те определят границите на камерата. Можете да зададете тези стойности според размера на света на вашата игра.
$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height
Сменете your_game_area_width и височината на_вашето_игрово_област с ширината и височината на вашия свят на играта. Този скрипт ефективно ограничава камерата в рамките на желаната зона, осигурявайки чисто и фокусирано игрово изживяване за играча.
Работа с приближаване и мащабиране на камерата
Динамичното приближаване и мащабиране може да бъде инструмент за създаване на въздействащи моменти в играта. Например, може да искате да увеличите мащаба на героя на играча по време на мощно действие или да намалите мащаба, за да разкриете голям враг или панорамен изглед на света на играта.
Godot прави приближаването и мащабирането лесно с увеличение собственост на Камера2D възел. Това свойство е Vector2, като (1, 1) е нивото на мащабиране по подразбиране. По-високите стойности ще намалят мащаба, правейки наблюдаваните обекти да изглеждат по-малки, докато по-ниските стойности ще увеличат мащаба, правейки обектите да изглеждат по-големи.
За да увеличите мащаба, можете да използвате:
$Camera2D.zoom = Vector2(0.7, 0.7)
И за да нулирате мащаба, използвайте:
$Camera2D.zoom = Vector2(1, 1)
Стойностите, които предавате на Vector2(), определят нивото на мащабиране по осите X и Y. Стойност на мащабиране (0,7, 0,7) означава, че камерата ще увеличи мащаба, докато стойност (1,5, 1,5) ще намали мащаба на камерата.
Обикновено трябва да поддържате една и съща стойност за двете оси, за да поддържате пропорциите, но можете да експериментирате с различни стойности, за да постигнете уникални ефекти.
Включително допълнителни функции
Когато създавате система от камери за вашата игра, има множество допълнителни функции, които можете да включите, за да подобрите изживяването.
Разклащане на камерата
Често срещан ефект, използван в много игри, особено платформър игри, е трептенето на камерата. Това обикновено се използва за предаване на въздействие или интензивност по време на определени моменти в играта, като експлозия или мощна атака на герой.
Можете лесно да добавите тази функция в Godot, като създадете a клатя() функция. Можете да определите продължителността и интензитета на ефекта на треперене според конкретното събитие в играта.
Звуците могат значително да подобрят усещането за място и движение в играта. Това може да бъде толкова просто, колкото пускането на swoosh звуков ефект когато камерата се движи бързо или панорамно, или толкова сложно, колкото промяна на силата на звука или височината на околните звуци или музикални записи въз основа на местоположението на камерата или нивото на увеличение.
Например, може да искате да намалите силата на звука на песен, докато камерата намалява, за да създаде усещане за разстояние.
Динамично осветление
Можете също така да свържете динамични светлинни ефекти към вашата камера. Докато камерата ви се движи из света на играта, можете да промените условията на осветление, за да отразите новите среди или да подчертаете конкретни области или обекти.
Това може да включва неща като постепенно затъмняване на сцената, докато камерата навлиза в пещера, или подчертаване на ключов обект с прожектор.
Преходни ефекти на камерата
Можете да създавате различни ефекти на преход при превключване между камери. Това може да е просто изрязване, при което изгледът незабавно прескача от една камера към друга, или избледняване, при което изгледът постепенно преминава от една камера към друга.
Можете да използвате по-сложни преходи, като изтриване, слайд или ирис, с допълнително кодиране и анимация.
Най-добри практики за добавяне на система от камери
Когато добавяте система от камери към вашата игра, има няколко най-добри практики, които трябва да имате предвид, за да осигурите възможно най-доброто игрово изживяване.
Избягвайте резките движения на камерата
Внезапните промени в перспективата на камерата могат да дезориентират играчите и да нарушат играта. Винаги се стремете към плавни преходи на камерата, за да поддържате потапяне.
Ограничете трептенето на камерата
Въпреки че трептенето на камерата може да повлияе на определени събития, твърде много може да направи играта трудна за проследяване и неудобна за игра. Използвайте този ефект пестеливо и умерено.
Тествайте различни нива на мащабиране
Различни игри и различни ситуации в рамките на една игра може да изискват различни нива на увеличение. Тествайте внимателно, за да намерите най-подходящото ниво на увеличение за всяка ситуация.
Внимателно обмислете границите на камерата
Границите на камерата трябва да бъдат внимателно зададени, за да отговарят на дизайна на вашите нива. Не искате играчът да вижда извън света на играта или да пропуска важни елементи извън екрана.
Дайте приоритет на опита на играча
Основната цел на системата от камери винаги трябва да бъде да подобри изживяването на играча. Независимо дали предоставя най-добрия изглед на действието, подчертава ключови моменти или помага на играча да се ориентира в средата, камерата винаги трябва да допринася за по-добро игрово изживяване.
Правене на Godot Games по-ангажиращи със система от камери
Една добре внедрена система от камери може да подобри цялостното игрово изживяване. Може да подчертае действието, да помогне при разказването на истории и да осигури по-завладяващо изживяване.
Като контролирате какво вижда играчът и кога го вижда, вие можете да ръководите пътуването му през света на играта и да направите играта по-динамична и ангажираща.