Zistite, ako pridať nepredvídateľný prvok do vašej hry.

Pri vývoji hier môžu prvky náhodnosti a nepredvídateľnosti výrazne prispieť k celkovému hernému zážitku. Jeden konkrétny spôsob, ako zaviesť takýto prvok, je prostredníctvom náhodne sa pohybujúcich objektov, ktoré pridávajú ďalšiu vrstvu interakcie a výzvy.

Ak pracujete s Godotom, môžete tento efekt dosiahnuť pomocou GDScript, Godotovho natívneho skriptovacieho jazyka.

Nastavenie hry Godot

Pred spustením nastavte základnú 2D hernú scénu herný engine Godot. Vytvorte novú 2D scénu a pridajte a CharacterBody2D uzol pre postavu hráča. The CharacterBody2D uzol je hlavným prvkom reprezentujúcim postavy, ktoré sa môžu pohybovať a interagovať so svojím prostredím.

Kód použitý v tomto článku je dostupný v tomto úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.

Pridajte k postave hráča dva podradené uzly: a CollisionShape2D s obdĺžnikovým tvarom a a Sprite2D pre grafické znázornenie hráča.

Ak chcete znaku pridať mobilitu, môžete použiť nasledujúci kód GDScript:

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)

Definujte premennú, rýchlosť, pre rýchlosť pohybu vášho prehrávača. The _physics_process (delta) funkcia ovláda pohyb postavy v reakcii na vstupy hráča. Normalizujte rýchlosť a smer postavy, aby ste zabezpečili konzistentný pohyb bez ohľadu na smer.

Vytváranie statických objektov pomocou StaticBody2D

Ďalej vytvorte objekty, s ktorými môže váš prehrávač interagovať. Nasledujúci príklad demonštruje vytvorenie statického objektu pomocou StaticBody2D uzol:

extends StaticBody2D

func _ready():
var collision_shape = CollisionShape2D.new()
collision_shape.shape = RectangleShape2D.new()
add_child(collision_shape)

Pridanie algoritmu náhodného pohybu pre statické objekty

Teraz, keď sú vaše statické objekty pripravené, je čas pridať do hry náhodnosť. Na tento účel môžete použiť jednoduchý algoritmus náhodného pohybu:

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

Definujte rýchlosť vášho statického objektu. Vytvorte tiež smer Vector2 a inicializujte ho náhodnými hodnotami medzi -1 a 1 pre obe osi.

V _physics_process (delta) Funkcia, zvýši polohu objektu o súčin jeho smeru, rýchlosti a časového delta, čím spôsobí, že sa objekt bude pohybovať v danom smere danou rýchlosťou.

Náhodné polohy a trajektórie pre statické objekty

Náhodnosť a nepredvídateľnosť môžete zvýšiť nielen zmenou rýchlosti a smeru objektov, ale aj ich počiatočných pozícií a trajektórií.

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

Tu je rýchlosť náhodná hodnota medzi 50 a 150. Počiatočná poloha objektu je náhodne určená v rámci veľkosti výrezu v _ready() funkcia a poloha objektu sa aktualizuje v _physics_process (delta) fungovať rovnako ako predtým.

Nastavenie rýchlosti, smeru a náhodnosti

Môžete navrhnúť interaktívnejšiu a pútavejšiu hru manipuláciou s rýchlosťou, smerom a náhodnosťou pohybu pre statické objekty. Tieto ovládacie prvky môžete vytvoriť pomocou GDScript:

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()

Ďalšie funkcie pre vaše náhodne sa pohybujúce objekty

Zatiaľ čo základný náhodný pohyb dodáva vašej hre nepredvídateľnú dynamiku, existuje nespočetné množstvo ďalších funkcií, ktoré môžete pridať na ďalšie vylepšenie vašej hry. Niektoré príklady:

Farebná variácia

Podobne ako pri náhodnom výbere rýchlosti a smeru objektov, môžete tiež náhodne usporiadať ich farby. To môže vašej hre pridať živší a vizuálne príťažlivejší aspekt. Môžete to urobiť zmenou modulovať majetok škriatka.

sprite.modulate = Color(randf(), randf(), randf())

Variácia veľkosti

Náhodná zmena veľkosti objektov pridáva ďalšiu úroveň obtiažnosti a nepredvídateľnosti. Hráči sa budú musieť neustále prispôsobovať meniacim sa veľkostiam objektov. Veľkosť objektu môžete zmeniť jeho úpravou stupnica nehnuteľnosť:

sprite.scale = Vector2(randf_range(0.5, 2.0), randf_range(0.5, 2.0))

Vytváranie objektov

Namiesto pevného počtu náhodne sa pohybujúcich objektov môžete implementovať systém, ktorý vytvára nové objekty v pravidelných intervaloch alebo za určitých podmienok. To by mohlo pridať novú úroveň obtiažnosti, pretože hráč bude musieť upraviť svoju stratégiu, keď sa na obrazovke objaví viac objektov.

Životnosť objektu

Okrem vytvárania nových objektov môžete tiež nechať objekty, ktoré sa po určitom čase automaticky zničia. To môže zabrániť prílišnému preplneniu obrazovky a udržať hrateľnosť sviežu.

Interakcie

Zamyslite sa nad pridaním špecifických interakcií medzi prehrávačom a pohyblivými objektmi. Napríklad kolízia s určitými objektmi môže zvýšiť skóre hráča, zmeniť rýchlosť hráča alebo dokonca zmeniť herné prostredie. Môžete tiež umožniť hráčovi skákať keď stojíte na plošine.

Osvedčené postupy na pridávanie náhodne sa pohybujúcich objektov

Pri pridávaní náhodne sa pohybujúcich objektov je dôležité zvážiť niekoľko osvedčených postupov, aby ste zaistili dobre vyváženú a pútavú hru:

Úvahy o výkone

Hoci je lákavé pridať čo najviac objektov, nezabudnite, že každý objekt zvyšuje výpočtovú záťaž herného enginu. Vždy otestujte svoju hru na cieľovom hardvéri, aby ste sa uistili, že výkon nebude negatívne ovplyvnený.

Vyváženie náhodnosti a hrateľnosti

Zatiaľ čo náhodné predmety môžu pridať zábavnú nepredvídateľnosť, príliš veľa náhodnosti môže viesť k frustrácii. Nezabudnite rozsiahlo testovať, aby ste dosiahli správnu rovnováhu medzi výzvou a pôžitkom.

Kolízie a odozva

Zaistite, aby hra správne riešila kolízie medzi hráčom a predmetmi. Náhodné pohybujúce sa objekty môžu spôsobiť neočakávané kolízne scenáre, preto si ich naplánujte a dôkladne otestujte.

Vizuálna čistota

Náhodne sa pohybujúce objekty by mali vyčnievať z pozadia a iných neinteraktívnych prvkov. To pomáha hráčom rýchlo pochopiť hernú situáciu a podľa toho plánovať svoje akcie. Môžete tiež pridať zvukové efekty k vašim objektom, aby vynikli.

Vplyv náhodne sa pohybujúcich predmetov na vašu hru Godot

Náhodné pohybujúce sa objekty môžu výrazne prispieť k tomu, aby bola vaša hra Godot pútavejšia. Zavádzajú prvok nepredvídateľnosti, ktorý drží hráčov v strehu. Zakaždým, keď hráč spustí hru, privíta ho inou konfiguráciou objektov, čo zvyšuje jej znovuhrateľnosť.

Navyše, keďže hráči nedokážu predpovedať dráhu pohybujúcich sa objektov, musia zostať sústredení a pohotoví, aby sa mohli pohybovať v hernom prostredí