Fedezze fel, hogyan adhat hozzá egy kiszámíthatatlan elemet a játékmenethez.

A játékfejlesztés során a véletlenszerűség és a kiszámíthatatlanság elemei nagyban hozzájárulhatnak az általános játékélményhez. Egy ilyen elem bevezetésének egyik különleges módja a véletlenszerűen mozgó objektumok, amelyek további interakciót és kihívást jelentenek.

Ha Godot-tal dolgozik, ezt a hatást a GDScript, a Godot natív szkriptnyelve segítségével érheti el.

A Godot játék beállítása

Mielőtt elkezdené, állítson be egy alapvető 2D-s játékjelenetet a Godot játékmotor. Hozzon létre egy új 2D-s jelenetet, és adjon hozzá a CharacterBody2D csomópont a játékos karakteréhez. A CharacterBody2D A csomópont a fő eleme azoknak a karaktereknek, akik mozoghatnak és interakcióba léphetnek a környezetükkel.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

Adjunk hozzá két gyermek csomópontot a játékos karakteréhez: a CollisionShape2D téglalap alakú, és a Sprite2D a játékos grafikus megjelenítéséhez.

instagram viewer

Ha mobilitást szeretne adni a karakternek, használja a következő GDScript kódot:

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)

Határozzon meg egy változót, sebesség, a lejátszó mozgási sebességéhez. A _fizikai_folyamat (delta) funkció szabályozza a karakter mozgását válaszul a játékos bemeneteire. Normalizálja a karakter sebességét és irányát, hogy iránytól függetlenül egyenletes mozgást biztosítson.

Statikus objektumok létrehozása a StaticBody2D segítségével

Ezután hozzon létre olyan objektumokat, amelyekkel a játékos kölcsönhatásba léphet. A következő példa egy statikus objektum létrehozását mutatja be a StaticBody2D csomópont:

extends StaticBody2D

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

Véletlenszerű mozgási algoritmus hozzáadása statikus objektumokhoz

Most, hogy a statikus objektumai készen állnak, itt az ideje, hogy véletlenszerűséget adjon a játékhoz. Ehhez egy egyszerű véletlenszerű mozgási algoritmust használhat:

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

Határozza meg a statikus objektum sebességét. Ezenkívül hozzon létre egy Vector2 irányt, és inicializálja -1 és 1 közötti véletlenszerű értékekkel mindkét tengelyre.

Ban,-ben _fizikai_folyamat (delta) függvény, az objektum pozícióját az irányának, sebességének és az idődeltának a szorzatával növeli, aminek hatására az adott sebességgel az irányba mozog.

Véletlenszerű pozíciók és pályák statikus objektumokhoz

Növelheti a véletlenszerűséget és a kiszámíthatatlanságot, ha nem csak az objektumok sebességét és irányát változtatja, hanem azok kezdeti helyzetét és pályáját is.

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

Itt a sebesség egy véletlenszerű érték 50 és 150 között. Az objektum kezdeti pozíciója véletlenszerűen kerül meghatározásra a nézetablak méretén belül _kész() funkció és az objektum pozíciója frissül a _fizikai_folyamat (delta) ugyanúgy működik, mint korábban.

A sebesség, az irány és a véletlenszerűség beállítása

Interaktívabb és vonzóbb játékmenetet tervezhet a statikus objektumok mozgásának sebességének, irányának és véletlenszerűségének manipulálásával. Ezeket a vezérlőket a GDScript segítségével hozhatja létre:

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

További funkciók véletlenszerűen mozgó objektumaihoz

Míg az alapvető véletlenszerű mozgás kiszámíthatatlan dinamikát ad a játéknak, számtalan további funkciót is hozzáadhat a játék további fejlesztéséhez. Néhány példa:

Színváltozat

Az objektumok sebességének és irányának véletlenszerű beállításához hasonlóan a színeiket is véletlenszerűvé teheti. Ez élénkebb és látványosabb megjelenést adhat a játéknak. Ezt úgy teheti meg, hogy megváltoztatja a modulálni a sprite tulajdona.

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

Méret variáció

Az objektumok méretének véletlenszerű megváltoztatása további nehézségi szintet és kiszámíthatatlanságot jelent. A játékosoknak folyamatosan alkalmazkodniuk kell a tárgyak változó méretéhez. Egy objektum méretét módosíthatja annak beállításával skála ingatlan:

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

Objektum ívás

Ahelyett, hogy rögzített számú véletlenszerűen mozgó objektum lenne, megvalósíthat egy olyan rendszert, amely rendszeres időközönként vagy bizonyos feltételek mellett új objektumokat hoz létre. Ez új nehézségi réteget jelenthet, mivel a játékosnak módosítania kell stratégiáját, ahogy egyre több tárgy jelenik meg a képernyőn.

Az objektum élettartama

Amellett, hogy új objektumokat hoz létre, azt is megteheti, hogy az objektumok egy bizonyos idő elteltével automatikusan megsemmisítsék magukat. Ez megakadályozhatja, hogy a képernyő túlságosan zsúfolt legyen, és frissen tarthatja a játékmenetet.

Interakciók

Gondoljon konkrét interakciók hozzáadására a lejátszó és a mozgó objektumok között. Például bizonyos tárgyakkal való ütközés növelheti a játékos pontszámát, megváltoztathatja a játékos sebességét, vagy akár a játék környezetét is. Te is hagyja, hogy a játékos ugorjon emelvényen állva.

Bevált gyakorlatok véletlenszerű mozgó objektumok hozzáadásához

Véletlenszerűen mozgó objektumok hozzáadásakor fontos figyelembe venni néhány bevált gyakorlatot a kiegyensúlyozott, megnyerő játék érdekében:

Teljesítmény szempontjai

Bár csábító a lehető legtöbb objektum hozzáadása, ne feledje, hogy minden egyes objektum növeli a játékmotor számítási terhelését. Mindig tesztelje a játékot a célhardveren, hogy megbizonyosodjon arról, hogy a teljesítményt nem befolyásolja negatívan.

A véletlenszerűség és a játszhatóság egyensúlya

Míg a véletlenszerű objektumok szórakoztató kiszámíthatatlanságot adhatnak, a túl sok véletlenszerűség frusztrációhoz vezethet. Ügyeljen arra, hogy alaposan teszteljen, hogy megtalálja a megfelelő egyensúlyt a kihívás és az élvezet között.

Ütközések és válaszlépések

Győződjön meg arról, hogy a játék megfelelően kezeli a játékos és a tárgyak közötti ütközéseket. A véletlenszerűen mozgó tárgyak váratlan ütközési forgatókönyveket okozhatnak, ezért tervezze meg ezeket, és alaposan tesztelje.

Vizuális tisztaság

A véletlenszerűen mozgó tárgyaknak ki kell tűnniük a háttérből és más nem interaktív elemekből. Ez segít a játékosoknak abban, hogy gyorsan megértsék a játékhelyzetet, és ennek megfelelően tervezzék meg cselekvéseiket. Te is hanghatások hozzáadása tárgyaihoz, hogy kiemelkedjenek.

Véletlenszerű mozgó objektumok hatása a Godot játékra

A véletlenszerűen mozgó tárgyak jelentősen hozzájárulhatnak ahhoz, hogy a Godot-játékot még vonzóbbá tegye. Bevezetik a kiszámíthatatlanság egy elemét, amely lábujjhegyen tartja a játékosokat. Minden alkalommal, amikor egy játékos elindítja a játékot, más-más objektumkonfigurációval fogadja, ami növeli a játék újrajátszhatóságát.

Ezen túlmenően, mivel a játékosok nem tudják megjósolni a mozgó tárgyak útját, koncentrálniuk kell és reagálniuk kell a játékkörnyezetben való navigáláshoz.