Kasutage seda tehnikat vaenlase liikumise ja käitumise parandamiseks, jäljendades põhinägemust.

Vaatejoone tuvastamine lisab teie mängule keerukust mehhanismiga, mis võimaldab tegelastel või objektidel ümbritsevat tajuda. Saate seda funktsiooni kasutada vaenlase tehisintellekti käitumise, mängija nähtavuse mehaanika, varjatud mängu ja muu jaoks.

Godot'is pakub RayCast2D sõlm lihtsat ja tõhusat viisi otsenähtuse tuvastamiseks.

Godot' mängu seadistamine

Enne RayCast2D sõlmedesse sukeldumist seadistage Godot 4-s põhiline 2D-mängukeskkond. Looge mängija märk, mis saab klaviatuurisisendeid kasutades ringi liikuda ja suhelda platvormidega.

Esiteks looge mängija tegelase jaoks stseen. Lisa CharacterBody2D sõlm stseeni juurena. Sees CharacterBody2D, Lisa Kokkupõrkekuju2D ristküliku kujuga ja a Sprite2D tegelase visuaalseks kujutamiseks.

Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Siin on mängija liikumise GDScript-kood:

extends CharacterBody2D
instagram viewer

var speed = 300

func _physics_process(delta):
var input_dir = Vector2.ZERO

if Input.is_action_pressed("ui_left"):
input_dir.x -= 1

if Input.is_action_pressed("ui_right"):
input_dir.x += 1

if Input.is_action_pressed("ui_up"):
input_dir.y -= 1

if Input.is_action_pressed("ui_down"):
input_dir.y += 1

velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)

Nüüd looge mängijale suhtlemiseks mõned platvormid. Sa võid kasutada StaticBody2D platvormide esindamiseks sobivate põrkekujudega sõlmed. Korraldage need stseenis platvormikeskkonna loomiseks.

RayCast2D seadistamine

Nähtavuse tuvastamise loomiseks kasutage nuppu RayCast2D sõlm. Siin on, kuidas saate lisada a RayCast2D sõlm, mis kasutab GDScripti:

var raycast: RayCast2D

func _ready():
raycast = RayCast2D.new()
add_child(raycast)

Kinnitage see skript kindlasti CharacterBody2D sõlm. See koodilõik loob uue RayCast2D sõlme ja kinnitab selle lapsena mängija tegelase külge.

Visuaalse tagasiside pakkumine otsenähtava suhtluse kohta

Nüüd saate printida sõnumi alati, kui mängija vaatenurk ristub platvormiga. Heitke kiir mängija asendist liikumissuunda. Kui kiir põrkub objektiga, tähendab see, et mängijal on vaateväljas platvormile.

Lisage samale skriptile järgmine kood:

func _physics_process(delta):
#... (previous movement code)

raycast.target_position = Vector2(100, 0)

if raycast.is_colliding():
print("Collided with platform!")

Siin on väljund:

RayCast2D funktsionaalsuse laiendamine

Mängu interaktiivsuse ja keerukuse suurendamiseks saate kasutada palju täiustatud funktsioone.

get_collider()

Kasutades get_collider() meetodil pääsete juurde esimesele objektile, mida kiir lõikab. Meetod tagastab nulli, kui kiirte teel pole ühtegi objekti. See on eriti kasulik konkreetse objekti tuvastamisel, millele teie mängijal on vaateväljas.

if raycast.is_colliding():
var collided_object = raycast.get_collider()

if collided_object:
print("You can see:", collided_object.name)

get_collider_rid()

The get_collider_rid() meetod võib teile öelda esimese lõikuva objekti ressursi ID (RID):

if raycast.is_colliding():
var collider_rid = raycast.get_collider_rid()

if !collider_rid.is_valid():
print("No valid object RID")
else:
print("Object RID:", collider_rid)

get_collider_shape()

The get_collider_shape() funktsioon tagastab esimese lõikuva objekti kuju ID või 0, kui kokkupõrget ei toimu.

if raycast.is_colliding():
var collider_shape = raycast.get_collider_shape()

if collider_shape == 0:
print("No valid shape ID")
else:
print("Shape ID:", collider_shape)

get_collision_normal()

Et interaktsiooni paremini mõista, get_collision_normal() annab teile kokkupõrkepunktis kuju normaalväärtuse. Juhtudel, kui kiir algab kuju ja hit_from_side on tõsi, normaalne tagastatakse Vektor2(0, 0).

if raycast.is_colliding():
var collision_normal = raycast.get_collision_normal()
print("Collision Normal:", collision_normal)

get_collision_point()

Kui kiir lõikub objektiga, get_collision_point() tagastab täpse kokkupõrkepunkti globaalsetes koordinaatides.

if raycast.is_colliding():
var collision_point = raycast.get_collision_point()
print("Collision Point:", collision_point)

Nende täiustatud võimaluste kasutamine RayCast2D sõlme, saate kriitilise ülevaate kiirte ja põrkuvate objektide vastastikusest mõjust.

Need meetodid võimaldavad teil koguda olulist teavet, mis võib oluliselt mõjutada mängumehaanikat, objektide vastasmõju ja mängijate tagasisidet.

Kaasa arvatud lisafunktsioonid

Lisaks põhilisele vaatevälja tuvastamise funktsioonile saate oma mängu dünaamikat veelgi täiustada, rakendades mõningaid täiustatud funktsioone.

Sündmuste käivitajad

Selle asemel, et lihtsalt sõnumit printida, saate käivitada konkreetseid mängusiseseid sündmusi. Näiteks võib peidetud teede paljastamine, mehhanismide aktiveerimine või vaenlaste hoiatamine mängija kohalolekust teie mängule sügavust lisada.

Dünaamiline takistuste käsitlemine

Mõelge stsenaariumidele, kus takistused võivad vaatevälja takistada. Dünaamilise takistuse tuvastamise rakendamine tagab, et vaatevälja värskendatakse reaalajas, kui objektid liiguvad mängija vaatevälja ja sealt välja.

Kohandatud visuaalsed indikaatorid

Selle asemel, et tugineda ainult tekstile, saate luua kohandatud visuaalseid indikaatoreid, et rõhutada otsenähtava suhtluse olemasolu. See võib hõlmata pleieri või objekti spraidi värvi muutmist, ikooni kuvamist või asjakohaste elementide animeerimine.

Sõjamehaanika udu

Strateegia- või uurimistööle keskenduvate mängude jaoks saate tutvustada sõjamehaanika udu. See piirab mängija nägemist, kuni nad loovad vaatevälja, paljastades järk-järgult mängumaailma ja julgustades strateegilisi otsuseid langetama.

Parimad tavad vaatevälja tuvastamiseks

Nähtavuse tuvastamise optimeerimine on sujuva mängukogemuse säilitamiseks ülioluline. Siin on mõned parimad tavad, mida meeles pidada.

Raycasti sagedus

Vältige kiirsaadete sooritamist igas kaadris, kui see pole vajalik. Kaaluge vaatevälja kontrollimist ainult siis, kui mängija asukoht või keskkond oluliselt muutub. See aitab vähendada tarbetuid arvutusi.

Ray pikkus

Tasakaalustage oma raycasti pikkus. Äärmiselt pikad kiired võivad jõudlust mõjutada, seega valige pikkus, mis katab vajaliku ala, hoides samal ajal arvutuslikku koormust kontrolli all.

Kokkupõrkekihid

Kasutage kokkupõrkekihte ja maske, et täpsustada, milliseid objekte vaatevälja tuvastamine arvestab. See hoiab ära tarbetute kiirguste edastamise ebaolulistele objektidele.

Vahemällu salvestamise tulemused

Kui tuvastate sama vaatevälja mitme objekti või kaadri jaoks, kaaluge tulemuste vahemällu salvestamist, et vältida üleliigseid arvutusi.

Platvormi tasandi integratsioon

Joondage oma vaatevälja tuvastamise mehaanika taseme kujundusega teie platvormimäng. Võtke arvesse keskkonna vertikaalsust, platvormide erinevaid kõrgusi ja võimalikke takistusi, mis võivad takistada vaatevälja.

Sujuva ja intuitiivse mängukogemuse loomiseks veenduge, et teie tuvastussüsteem arvestaks nende nüanssidega.

Muutke Godoti mängud silmapiiri tuvastamise abil kaasahaaravamaks

Nähtavuse tuvastamine lisab teie mängumaailma sügavust ja realistlikkust. Mängijad saavad oma vaateväljast lähtuvalt väljakutseid strateegiastada, peita või neile läheneda erinevalt. See mehaanik võib muuta lihtsa platvormeri kaasahaaravamaks kogemuseks, muutes mängu kaasahaaravamaks ja meeldejäävamaks.