Научите како да моделирате камеру која може да се креће по свету игара да би додала реализам и функционалност.

Једна уобичајена карактеристика коју ћете наћи у многим играма је померајућа камера која вас прати док се крећете по свету игре. Овај ефекат може додати дубину и реализам вашој игри и побољшати целокупно искуство играња.

Постоји много различитих начина за имплементацију камере за померање у ПиГаме-у, па се уверите да разумете њихове разлике.

Креирање једноставне игре

Пре почетка, инсталирајте пип на свој уређај и користите доњу команду да инсталирате ПиГаме модул:

пип инсталл пигаме

Сада можете креирати једноставну игру са правоугаоником играча и две статичне платформе. Играч може да се креће лево и десно помоћу тастера са стрелицама.

Овде можете пронаћи комплетан код за пројекат ГитХуб репо.

Започните увозом пигаме модула. Затим га иницијализујте и креирајте прозор игре користећи пигаме.дисплаи.сет_моде() функција. Затим поставите наслов прозора и креирајте цлоцк објекат за управљање брзином кадрова.

instagram viewer
увоз пигаме

пигаме.инит()

ВИНДОВ_ВИДТХ = 800
ВИНДОВ_ХЕИГХТ = 600

екран = пигаме.дисплаи.сет_моде((ВИНДОВ_ВИДТХ, ВИНДОВ_ХЕИГХТ))

пигаме.дисплаи.сет_цаптион("Моја једноставна игра")

сат = пигаме.тиме. сат()

БАЦКГРОУНД_ЦОЛОР = (255, 255, 255)

Затим подесите плејер и статичке платформе. Дефинишите величину играча и његову почетну позицију.

ПЛАИЕР_ВИДТХ = 50
ПЛАИЕР_ХЕИГХТ = 50

плаиер_к = ВИНДОВ_ВИДТХ // 2 - ПЛАИЕР_ВИДТХ // 2
плаиер_и = ВИНДОВ_ХЕИГХТ - ПЛАИЕР_ХЕИГХТ - 20

ПЛАИЕР_СПЕЕД = 10

РЕЦТАНГЛЕ_ЦОЛОР_1 = (255, 0, 0)
РЕЦТАНГЛЕ_ЦОЛОР_2 = (0, 0, 255)

правоугаоник_1 = пигаме. Рецт(200, 200, 100, 100)
правоугаоник_2 = пигаме. Рецт(500, 300, 150, 50)

Затим направите петљу игре која управља догађајима и ажурира екран. У петљи проверите догађаје као што је напуштање игре или померање играча помоћу тастера са стрелицама.

докИстина:
# Руковати догађајима
за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
пигаме.куит()
одустати()

# Нацртајте позадину
сцреен.филл (БАЦКГРОУНД_ЦОЛОР)

# Нацртајте статичне правоугаонике
пигаме.драв.рецт (екран, РЕЦТАНГЛЕ_ЦОЛОР_1, правоугаоник_1)
пигаме.драв.рецт (екран, РЕЦТАНГЛЕ_ЦОЛОР_2, правоугаоник_2)

# Нацртајте играча
плаиер_рецт = пигаме. Рецт (плаиер_к, плаиер_и, ПЛАИЕР_ВИДТХ,
ПЛАИЕР_ХЕИГХТ)

пигаме.драв.рецт (екран, (0, 0, 0), плаиер_рецт)

# Ажурирајте екран
пигаме.дисплаи.упдате()

# Ограничите брзину кадрова
цлоцк.тицк(30)

Подешавање камере

Сада када имате једноставну игру са правоугаоником играча и две статичне платформе, можете почети да радите на камери. У ПиГаме-у, камера је у суштини само офсет који делује на све објекте које нацртате на екрану. То значи да ако померите камеру улево, све на екрану ће изгледати као да се помера удесно.

Да бисте подесили камеру, прво морате да дефинишете променљиву која ће задржати Кс офсет камере. Позовите ову променљиву цамера_оффсет_к и иницијализујте га на 0.

# Подесите офсет камере
цамера_оффсет_к = 0

Затим ажурирајте позиције свих објеката које нацртате на екрану да бисте узели у обзир помак камере. То можете учинити додавањем цамера_оффсет_к вредност на Кс позицију сваког објекта. На пример, можете ажурирати позицију играча на следећи начин:

# Нацртајте играча
плаиер_рецт = пигаме. Рецт (плаиер_к + цамера_оффсет_к, плаиер_и, ПЛАИЕР_ВИДТХ,
ПЛАИЕР_ХЕИГХТ)

пигаме.драв.рецт (екран, (0, 0, 0), плаиер_рецт)

Слично томе, можете ажурирати позиције статичких платформи на следећи начин:

# Нацртајте статичне правоугаонике
рецтангле_1_драв_пос = рецтангле_1.мове (цамера_оффсет_к, 0)
пигаме.драв.рецт (екран, РЕЦТАНГЛЕ_ЦОЛОР_1, рецтангле_1_драв_пос)

рецтангле_2_драв_пос = рецтангле_2.мове (цамера_оффсет_к, 0)
пигаме.драв.рецт (екран, РЕЦТАНГЛЕ_ЦОЛОР_2, рецтангле_2_драв_пос)

Померање камере помоћу уноса са тастатуре

Сада када сте поставили камеру, можете почети да је померате. Један од начина да то урадите је да померите камеру као одговор на уносе са тастатуре. На пример, можете да померите камеру улево када играч притисне тастер са стрелицом налево.

Да бисте то урадили, додајте следећи код унутар петље догађаја која управља уносима са тастатуре:

ако евент.типе == пигаме. КЕИДОВН:
ако евент.кеи == пигаме. К_ЛЕФТ:
цамера_оффсет_к -= ПЛАИЕР_СПЕЕД
елиф евент.кеи == пигаме. К_ДЕСНО:
цамера_оффсет_к += ПЛАИЕР_СПЕЕД

Други начин је да промените к координату играча на тастатури, а затим да ажурирате офсет камере. Ово можете имплементирати на следећи начин:

# Руковати догађајима
за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
пигаме.куит()
одустати()

ако евент.типе == пигаме. КЕИДОВН:
ако евент.кеи == пигаме. К_ЛЕФТ:
плаиер_к -= ПЛАИЕР_СПЕЕД
елиф евент.кеи == пигаме. К_ДЕСНО:
плаиер_к += ПЛАИЕР_СПЕЕД

Затим можете ажурирати помак камере у односу на к координату играча на следећи начин:

цамера_оффсет_к = ВИНДОВ_ВИДТХ // 2 - плаиер_к - ПЛАИЕР_ВИДТХ // 2

Померање камере помоћу миша

Други начин за померање камере је коришћење миша. Можете дозволити играчу да повлачи екран тако што ћете кликнути и превући мишем.

Да бисте то урадили, пратите позицију миша када играч притисне леви тастер миша. Када померају миша, ажурирајте к координате играча. Требало би да се промени за разлику између тренутне позиције миша и почетне позиције коју сте пратили, моусе_старт_пос.

# Руковати догађајима
за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
пигаме.куит()
одустати()

ако евент.типе == пигаме. ДУГМЕ МИША:
ако евент.буттон == 1:
моусе_старт_пос = пигаме.моусе.гет_пос()

ако евент.типе == пигаме. МОУСЕМОТИОН:
ако пигаме.моусе.гет_прессед()[0]:
моусе_цуррент_пос = пигаме.моусе.гет_пос()
моусе_оффсет_к = моусе_цуррент_пос[0] - моусе_старт_пос[0]
плаиер_к -= моусе_оффсет_к
моусе_старт_пос = моусе_цуррент_пос

Додавање више функција камере

Поред ефекта камере за померање, можете додати неколико других функција везаних за камеру како бисте побољшали искуство играња. Једна таква карактеристика је ефекат зумирања камере који омогућава играчу да увећа или умањи свет игре. Овај ефекат можете постићи променом величине прозора игре и скалирањем објеката нацртаних на екрану.

Да бисте то урадили, дефинишите променљиву зумирања која ће чувати тренутни ниво зумирања игре. Поставите његову почетну вредност на 1,0, што представља без зумирања. Затим дефинишите функцију која ће израчунати скалирану величину објекта на основу тренутног нивоа зумирања.

зум = 1.0

дефгет_сцалед_сизе(величина):
повратак инт (величина * зум)

Затим ажурирајте положаје и величине објеката нацртаних на екрану помоћу гет_сцалед_сизе функција. На пример, можете ажурирати позицију и величину играча на следећи начин:

плаиер_рецт = пигаме. Рецт(
гет_сцалед_сизе (плаиер_к + цамера_оффсет_к),
гет_сцалед_сизе (плаиер_и),
гет_сцалед_сизе (ПЛАИЕР_ВИДТХ),
гет_сцалед_сизе (ПЛАИЕР_ХЕИГХТ)
)

Слично томе, ажурирајте позиције и величине статичких платформи на следећи начин:

рецтангле_1_драв_пос = пигаме. Рецт(
гет_сцалед_сизе (правоугаоник_1.к + цамера_оффсет_к),
гет_сцалед_сизе (правоугаоник_1.и),
гет_сцалед_сизе (рецтангле_1.видтх),
гет_сцалед_сизе (правоугаоник_1.висина)
)

пигаме.драв.рецт (екран, РЕЦТАНГЛЕ_ЦОЛОР_1, рецтангле_1_драв_пос)

рецтангле_2_драв_пос = пигаме. Рецт(
гет_сцалед_сизе (правоугаоник_2.к + цамера_оффсет_к),
гет_сцалед_сизе (правоугаоник_2.и),
гет_сцалед_сизе (правоугаоник_2.видтх),
гет_сцалед_сизе (правоугаоник_2.висина)
)

пигаме.драв.рецт (екран, РЕЦТАНГЛЕ_ЦОЛОР_2, рецтангле_2_драв_пос)

Повећајте или смањите ниво зума за 0,1 када плејер притисне тастер = или - кључ, респективно. Подесите нову величину прозора игре на основу тренутног нивоа зумирања. Да бисте то урадили, додајте следећи код унутар петље догађаја која управља уносима са тастатуре:

ако евент.типе == пигаме. КЕИДОВН:
ако евент.кеи == пигаме. К_ЈЕКУАЛС:
зум += 0.1

екран = пигаме.дисплаи.сет_моде((
инт (ВИНДОВ_ВИДТХ * зум),
инт (ВИНДОВ_ХЕИГХТ * зум)
))
елиф евент.кеи == пигаме. К_МИНУС:
зум -= 0.1

ако зум < 0.1:
зум = 0.1

екран = пигаме.дисплаи.сет_моде((
инт (ВИНДОВ_ВИДТХ * зум),
инт (ВИНДОВ_ХЕИГХТ * зум)
))

Са горњим кодом, успешно сте додали ефекат камере за зумирање нашој игрици ПиГаме. Комбиновањем ове функције са ефектом камере за померање, можете створити динамично и привлачно искуство игре.

Побољшање игре помоћу покрета камере

Додавање камере за померање у игрицу ПиГаме не само да побољшава визуелно искуство већ и побољшава игру. Омогућава играчу да види више света игре, пружајући му боље разумевање околине и олакшавајући навигацију.

Такође можете да користите померање камере да бисте креирали специјалне ефекте као што су зумирање и умањивање или подрхтавање екрана да бисте симулирали експлозије или земљотресе.