Avastage, kuidas lisada oma mängule ettearvamatut elementi.
Mänguarenduses võivad juhuslikkuse ja ettearvamatuse elemendid üldisele mängukogemusele oluliselt kaasa aidata. Üks konkreetne viis sellise elemendi tutvustamiseks on juhuslikud liikuvad objektid, mis lisavad täiendava interaktsiooni ja väljakutse kihi.
Kui töötate Godot'ga, saate selle efekti saavutada, kasutades GDScripti, Godoti emakeelt.
Oma Godoti mängu seadistamine
Enne alustamist seadistage 2D-mängu põhistseen Godoti mängumootor. Looge uus 2D-stseen ja lisage a CharacterBody2D sõlm mängija tegelase jaoks. The CharacterBody2D sõlm on peamine element tegelaste esindamiseks, kes saavad ringi liikuda ja oma keskkonnaga suhelda.
Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.
Lisage mängija tegelasele kaks alamsõlme: a Kokkupõrkekuju2D ristkülikukujulise kujuga ja a Sprite2D mängija graafilise esituse jaoks.
Märgile liikuvuse lisamiseks võite kasutada järgmist GDScripti koodi:
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)
Määratlege muutuja, kiirust, teie mängija liikumiskiiruse jaoks. The _füüsika_protsess (delta) funktsioon juhib tegelase liikumist vastuseks mängija sisenditele. Normaliseerige tegelase kiirus ja suund, et tagada järjepidev liikumine olenemata suunast.
StaticBody2D abil staatiliste objektide loomine
Järgmisena looge objektid, millega teie mängija saab suhelda. Järgmine näide demonstreerib staatilise objekti loomist, kasutades StaticBody2D sõlm:
extends StaticBody2D
func _ready():
var collision_shape = CollisionShape2D.new()
collision_shape.shape = RectangleShape2D.new()
add_child(collision_shape)
Staatiliste objektide juhusliku liikumise algoritmi lisamine
Nüüd, kui teie staatilised objektid on valmis, on aeg lisada oma mängule juhuslikkust. Selleks saate kasutada lihtsat juhusliku liikumise algoritmi:
extends StaticBody2D
var speed = 100
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()
func _physics_process(delta):
position += direction * speed * delta
Määrake oma staatilise objekti kiirus. Samuti looge Vector2 suund ja lähtestage see mõlema telje jaoks juhuslike väärtustega vahemikus -1 kuni 1.
Aastal _füüsika_protsess (delta) funktsioon, suurendab objekti asukohta selle suuna, kiiruse ja aja delta korrutise võrra, pannes selle antud kiirusega vastavas suunas liikuma.
Staatiliste objektide juhuslikud asukohad ja trajektoorid
Saate suurendada juhuslikkust ja ettearvamatust, muutes mitte ainult objektide kiirust ja suunda, vaid ka nende algset asukohta ja trajektoore.
extends StaticBody2D
var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)
func _physics_process(delta):
position += direction * speed * delta
Siin on kiirus juhuslik väärtus vahemikus 50 kuni 150. Objekti esialgne asukoht määratakse juhuslikult vaateava suuruse piires _valmis() funktsiooni ja objekti asukohta värskendatakse _füüsika_protsess (delta) toimivad nagu varem.
Kiiruse, suuna ja juhuslikkuse reguleerimine
Saate kujundada interaktiivsema ja kaasahaaravama mängu, manipuleerides staatiliste objektide liikumise kiiruse, suuna ja juhuslikkusega. Neid juhtelemente saate luua GDScripti abil:
extends StaticBody2D
var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()
var speed_variation_rate = 0.5
var direction_variation_rate = 0.5func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)func _physics_process(delta):
randomize_speed_and_direction()
position += direction * speed * deltafunc randomize_speed_and_direction():
if randf() < speed_variation_rate:
speed = randf_range(50, 150)
if randf() < direction_variation_rate:
direction = Vector2(value, value).normalized()
Lisafunktsioonid teie juhuslikult liikuvate objektide jaoks
Kuigi põhiline juhuslik liikumine lisab teie mängule ettearvamatut dünaamikat, on lugematu arv lisafunktsioone, mida saate mängu veelgi täiustamiseks lisada. Mõned näited hõlmavad järgmist:
Värvi variatsioon
Sarnaselt objektide kiiruse ja suuna juhusliku määramisega saate juhuslikult määrata ka nende värvid. See võib teie mängule lisada elavama ja visuaalselt atraktiivsema aspekti. Seda saate teha, muutes moduleerida spraidi vara.
sprite.modulate = Color(randf(), randf(), randf())
Suuruse variatsioon
Juhuslik objektide suuruse muutmine lisab veel ühe raskusastme ja ettearvamatuse. Mängijad peavad pidevalt kohanema objektide muutuva suurusega. Saate muuta objekti suurust seda reguleerides kaal vara:
sprite.scale = Vector2(randf_range(0.5, 2.0), randf_range(0.5, 2.0))
Objekti kudemine
Fikseeritud arvu juhuslike liikuvate objektide asemel võiksite rakendada süsteemi, mis loob korrapäraste ajavahemike järel või teatud tingimustel uusi objekte. See võib lisada uue raskusastme, kuna mängija peab oma strateegiat kohandama, kuna ekraanile ilmub rohkem objekte.
Objekti eluiga
Lisaks uute objektide loomisele saate lasta objektidel teatud aja möödudes end automaatselt hävitada. See võib takistada ekraani liigset segadust ja hoida mängu värskena.
Interaktsioonid
Mõelge konkreetsete interaktsioonide lisamisele mängija ja liikuvate objektide vahel. Näiteks võib kokkupõrge teatud objektidega suurendada mängija skoori, muuta mängija kiirust või isegi muuta mängukeskkonda. Sa saad ka lubage mängijal hüpata platvormil seistes.
Juhuslikult liikuvate objektide lisamise parimad tavad
Juhuslike liikuvate objektide lisamisel on oluline kaaluda mõnda parimat tava, et tagada tasakaalustatud ja kaasahaarav mäng.
Toimivuskaalutlused
Kuigi on ahvatlev lisada võimalikult palju objekte, pidage meeles, et iga objekt suurendab mängumootori arvutuslikku koormust. Testige oma mängu alati sihtriistvaraga, et veenduda, et see ei mõjuta jõudlust negatiivselt.
Juhuslikkuse ja mängitavuse tasakaalustamine
Kuigi juhuslikud objektid võivad lisada lõbusat ettearvamatust, võib liigne juhuslikkus põhjustada frustratsiooni. Testige kindlasti põhjalikult, et leida õige tasakaal väljakutse ja naudingu vahel.
Kokkupõrked ja reageerimine
Veenduge, et mäng käsitleb mängija ja objektide vahelisi kokkupõrkeid õigesti. Juhuslikult liikuvad objektid võivad põhjustada ootamatuid kokkupõrke stsenaariume, seega planeerige need ette ja testige põhjalikult.
Visuaalne selgus
Juhuslikult liikuvad objektid peaksid taustast ja muudest mitteinteraktiivsetest elementidest eristuma. See aitab mängijatel mänguolukorrast kiiresti aru saada ja oma tegevusi vastavalt planeerida. Sa saad ka lisada heliefekte oma objektidele, et need silma paistaksid.
Juhuslikult liikuvate objektide mõju teie Godoti mängule
Juhuslikult liikuvad objektid võivad teie Godoti mängu kaasahaaravamaks muuta. Need toovad sisse ettearvamatuse elemendi, mis hoiab mängijad oma varvastel. Iga kord, kui mängija mängu alustab, tervitab ta teda erineva konfiguratsiooniga objektidega, mis suurendab mängu taasesitamist.
Veelgi enam, kuna mängijad ei saa ennustada liikuvate objektide teed, peavad nad mängukeskkonnas navigeerimiseks jääma keskendunud ja reageerima.