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:

instagram viewer
extends CharacterBody2D

var speed = 200

func _physics_process(delta):
var velocity = Vector2()

if Input.is_action_pressed('ui_right'):
velocity.x += 1

if Input.is_action_pressed('ui_left'):
velocity.x -= 1

if Input.is_action_pressed('ui_down'):
velocity.y += 1

if 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.5

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):
randomize_speed_and_direction()
position += direction * speed * delta

func 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.