Мазмұны:

Makecode Arcade көмегімен GameGo -да шексіз деңгейлері бар платформер: 5 қадам (суреттермен)
Makecode Arcade көмегімен GameGo -да шексіз деңгейлері бар платформер: 5 қадам (суреттермен)

Бейне: Makecode Arcade көмегімен GameGo -да шексіз деңгейлері бар платформер: 5 қадам (суреттермен)

Бейне: Makecode Arcade көмегімен GameGo -да шексіз деңгейлері бар платформер: 5 қадам (суреттермен)
Бейне: How to Make a Platformer Game [Part 1: Intro, sprites, movement & tile map] 2024, Қараша
Anonim
Image
Image

GameGo - TinkerGen STEM білім беруімен жасалған Microsoft Makecode үйлесімді ретро ойын портативті консолі. Ол STM32F401RET6 ARM Cortex M4 чипіне негізделген және STEM тәрбиешілеріне немесе ретро видео ойындар жасауды ұнататын адамдарға арналған. Осы оқулықты орындап, ойынды Makecode Arcade тренажерінде көруге болады, содан кейін оны GameGo -да іске қосуға болады.

Бұл мақалада біз шексіз кездейсоқ деңгейлері бар платформерлік ойын жасаймыз. Платформада ойыншының басқарылатын кейіпкері кедергілерден аулақ бола отырып, ілулі платформалар арасында секіріп, көтерілуі керек. Қоршаған ортада әр түрлі биіктіктегі біркелкі емес рельеф бар, олар өту керек. Ойыншы жиі секірудің биіктігі мен қашықтығын бақылайды, бұл олардың кейіпкерінің өлуіне жол бермеу немесе қажетті секірулерді жіберіп алмау үшін. Біз осы негізгі элементтердің барлығын енгіземіз, сонымен қатар соңғы деңгейге жеткенде жаңа деңгейлерді құратын реттелетін функцияны қосамыз. Бастайық!

Жабдықтар

GameGo

1 -қадам: Батыр

Батыр
Батыр

Алғашқы қадам ретінде біз альтер-эго құрамыз. Менің сурет салу дағдыларым өте нашар, сондықтан мен Галереядан біреуін қолдануды шештім;) Біз жасаған алдыңғы ойыннан айырмашылығы, бұл платформерде біздің ойнайтын кейіпкеріміз тек оңға және солға жылжи алады, сонымен қатар ол секіре алады. Басты кейіпкерге екі түрлі спрайттың орнына, бұл жолы біреуі жеткілікті - біз бағытты өзгерткенде спрайттың бейнесін аударуға болады.

Бірінші нәрсе - фон мен плитка картасын қосу. Мен ұзындығы 32х8 плиткалық картаны таңдадым - бірінші деңгей үшін біз оны 2 -ші скриншоттағыдай қолмен саламыз. Содан кейін mySprite жиынтығымен ойнатылатын кейіпкерді плеерлік блок түріне қосамыз және оны 0-5 тақтайшаның үстіне орналастырамыз.. Біз сондай -ақ камераны ойнатылатын кейіпкермен жылжытуға және оның солға және оңға қозғалысын басқаруға қоямыз - біз vy қозғалысының жылдамдығын 0 -ге қоямыз, өйткені біздің кейіпкер картада y бағыты бойынша еркін жүзе алмауы керек. Қосылған… түймесін басылған екі блокты қосыңыз, біреуі солға, екіншісі оңға. Сол жақ түймешік басылғанда, біз батырманы баспас бұрын бағытымыздың «солға» кеткенін тексереміз. Егер солай болса, біз солға қарай жүруді жалғастырамыз. Егер олай болмаса, бізге кейіпкеріміздің спрайт бейнесін аудару қажет. Дұрыс қозғалыс үшін ұқсас логика.

Әзірге бәрі жақсы, біздің кейіпкеріміз ешбір кедергіні жеңе алмайтын сияқты. Сондықтан бізге секіруді қосу керек. Біз түймелерді басу үшін басқару элементтерін бақылаймыз және ол анықталған кезде біз ауыспалы секіруді 1 -ге орнатамыз, уақыттың секіру қозғалысының басталуын ескереміз және кейіпкердің сприт жылдамдығын -200 -ге (жоғары қарай) орнатамыз. Содан кейін белгілі бір уақыттан кейін біз жылдамдықты 200 -ге қоямыз (төмендейді), сондықтан біздің кейіпкеріміз ракета ретінде аспанға атпайды.

Менің ойымша, біз қазір сынаққа лайық батыр жасадық! Ал, қиындық қайда?

2 -қадам: Дұшпандар

Дұшпандар
Дұшпандар

Біз жаулардың спрайттарын сақтау үшін массив құрылымын қолданамыз. Дұшпандардың түрі үшін біз кішкене жолды таңдаймыз және жарғанақты қолданамыз:) коронавирус анықтамасы емес, бұл тек қана жарқанаттар ұшып кете алады, сондықтан біздің ойнайтын кейіпкеріміз сияқты оларға гравитацияны «имитациялаудың» қажеті жоқ. Жасалған жарғақты кездейсоқ уылдырық тақтайшасына (кішкене ақ таңбамен белгіленген) қою үшін олардың жауынгерлік спритін қолданыңыз және олардың вх жылдамдығын -10 -ға орнатыңыз (баяу оңға жылжиды). Содан кейін әр 2000 мс блок сайын ойын жаңартуларында біз dushman_list -тің әр элементін қайталаймыз және олардың бағытын кездейсоқ өзгертеміз, сонымен қатар қажет болған жағдайда жарғанаттардың спритін айналдырамыз (қозғалыс бағытының өзгеруін көрсету үшін). Ақырында, біз ойыншының спрайтына басқаSprite of Enemy блоктарымен сәйкес келуін қосамыз, онда біз ойыншының бұрын соққы алғанын тексереміз. Егер біз бір өмірді шегермесек, хит жалауын 1 -ге орнатыңыз (соққы берілді) және таймерді іске қосыңыз. Соңғы соққы уақытынан 500 мс өткен соң, біз жалауды 0 -ге өзгертеміз. Біз ойыншы жаумен соқтығысқаннан кейін оның қымбат өмірін жоғалтпауы үшін жасаймыз.

Қалай екенімізді тексерейік. Әрине, барлық жарғанаттар ұшып, біздің ойыншыны тістеп жатқанда, бұл көрініс тірідей көрінеді. Енді бізге ерлік істерімізді жасау үшін қару керек!

3 -қадам: қару

Қару
Қару

Қару үшін мен ескі Nintendo ойынынан шабыт алған екі ағайынды туралы шабыттандырдым:) Кастрит спрайттарын дұшпандарды қосуға ұқсас деңгейге қосайық. Біз сондай -ақ has_crate айнымалысын -1 -ге инициализациялаймыз, бұл біздің кейіпкерімізде жәшік жоқ екенін көрсетеді. Ойыншының спрайт бойынша басқа түрдегі Food блокпен сәйкес келуі, бізде жәшіктің бар -жоғын тексереміз, егер олай болмаса, has_crate айнымалысын тізімдегі крат спрайтының индексіне орнатамыз. Содан кейін ойынды жаңарту блогында біз бұл спрайтты ойыншының спрайтымен бірге жылжытамыз, ал егер А түймесі басылса, біз кратаның vx жылдамдығын 1200 немесе -1200 -ге өзгертеміз (кейіпкердің қозғалыс бағытына байланысты). Біз сондай -ақ has_crate айнымалы мәнін қайтадан -1 мәніне қойдық және дәл қазір ауаға ұшырылған шкафтың спрайт түрін Projectile деп өзгерттік.

Ақырында, біз жәшіктер ұшырылған кезде жауларды жойып жіберуі керек (бірақ дұшпандар жәшіктен кездейсоқ сүрініп қалғанда емес! Сондықтан біз азық-түлік теріп, оны ұшырылған кезде снарядқа өзгерту үшін жәшіктерді тағайындадық) және соққан кезде өздігінен жойылуы керек. қабырға. Біз басқа спрайтта басқа снарядтармен жаудың басқа блоктарымен сәйкес келеді - бұл жағдайда біз екі спрайтты да жойып, ұпайларды бір -бірден көтереміз. Егер снаряд қабырғаға соғылса, біз оның спритін бұзамыз.

Дайын болды! Ойынды қазір ойнауға болады, бірақ кез келген қиындық жоқ - тек бір деңгей және өте қарапайым. Біз қолмен қосымша деңгейлер жасай аламыз немесе бұл деңгейлерді біз үшін автоматты түрде шығаратын алгоритм жаза аламыз, бірақ олар адам жасаған деңгейлерге ұқсамайды.

4 -қадам: Шексіз шытырман оқиғалар

Шексіз шытырман оқиғалар
Шексіз шытырман оқиғалар
Шексіз шытырман оқиғалар
Шексіз шытырман оқиғалар
Шексіз шытырман оқиғалар
Шексіз шытырман оқиғалар

Кездейсоқ деңгейдегі функция бастапқыда біршама қорқынышты болып көрінеді, бірақ бұл шын мәнінде жаңа деңгейдің алгоритмдік генерациясының қарапайым қадамдар жиынтығы. Біріншіден, біз кейіпкерімізді жаңа деңгейге көтеру үшін қамқорлық жасаймыз - ойнатқыштың бір -біріне сәйкес келуін спрайтта қолдану арқылы … біз порталдың есік тақтасын жаңа деңгейге көтеру құралы ретінде қолданамыз. Generate_level функциясында қатар, col және кездейсоқ айнымалы мәндерді инициализациялаймыз. Сонымен қатар біз жаңа тақтайша картасын жасаймыз, көлемі бұрынғыдай, бірақ бос. Бұл жерде кішкене ескерту бар - картаның қатарында… col… блогында жиынтығын пайдалану үшін, тақта картасында дәл осы тақтайшалар болуы керек - бұл интуитивті емес және Makecode қатесі. Сонымен, сізге плитка картасын құру, плиткалардың барлық түрлерін кездейсоқ генерацияға енгізу, содан кейін оларды өшіру қажет.

Біз оның үстіне бірінші плитканы (0x6) және ойнатқышты қолмен қоямыз. Содан кейін біз келесі қадамды 30 рет қайталаймыз - келесі қадам - бұл келесі бағанның тақтайшасы 1) алдыңғы деңгеймен 2) бір жоғары немесе 3) бір төмен болуын шешетін True -False тексерулерінің қарапайым сериясы. Келесі плитка лава плиткасы болу ықтималдығы өте аз - біз олардың көп болуын қаламаймыз! Әр плитка жасалғаннан кейін біз оның астындағы кеңістікті лавамен толтырамыз - тек әдемілік үшін. Соңғы қадам ретінде біз жаулар мен жәшіктерді қосамыз және оларды кездейсоқ плиткалардың үстіне қоямыз.

5 -қадам: шытырман оқиға басталады

Шытырман оқиға басталады
Шытырман оқиға басталады

Воила! Біз платформерді аяқтадық және біздің кейіпкеріміз жарғанаттарды жеңіп, қораптарды бұзып, шексіз шытырман оқиғаға шыға алады. Егер сізде проблемалар туындаса, сіз кодты GitHub репозиторийінен жүктей аласыз.

Бұл жай ғана жоспар және кейбір жақсартулар бар, мысалы әр түрлі жаулар, бонустар, жақсы деңгейдегі буын және т.б. Егер сіз ойынның жақсартылған нұсқасын жасасаңыз, оны төмендегі түсініктемелерде бөлісіңіз! GameGo және өндірушілер мен STEM тәрбиешілеріне арналған басқа да жабдықтар туралы қосымша ақпарат алу үшін біздің веб -сайтқа кіріңіз, https://tinkergen.com/ және біздің ақпараттық бюллетеньге жазылыңыз.

TinkerGen MARK (Make A Robot Kit) үшін Kickstarter науқанын құрды, бұл кодтауды, робототехниканы, AI үйретуге арналған роботтар жиынтығы!

Ұсынылған: