Hvordan implementerer jeg en stifindende AI i et 2D-platformspil i Unity?


Bedste svar

For en 2D-platformspiller (side til side) den enkleste måde at tænke hvordan at gøre dette ville få spillerne til at transformere og få Sprite Renderer til at vende på den måde og Translate-hastigheden også at vende på den måde. Der er virkelig ingen stedsøgning i en platformspiller for en fjende. Et eksempel kan være noget som:

[SerializeField] Transform player;

[SerializeField] SpriteRenderer rend;

[SerializeField] float speed;

void Update()

{

if(player.pos.x < transform.position.x)

{

renderer.flipX = true;

transform.Translate(new Vector2(-speed, 0f));

}

else

{

renderer.flipX = false;

transform.Translate(new Vector2(speed, 0f));

}

Svar

Et af de projekter, jeg arbejdede med, da jeg havde tid (= mellem job: d), var et meget klassisk old-school lavt niveau 2d sprite-baseret spilmotor, velegnet til platforme og lignende. Bare fordi.

Det er faktisk en ret sjov ting at tackle ved at skrive din egen 2d-motor, den er lille nok til at du kan klare den arbejde alene inden for få måneder r end år, så det er ikke som en stor 3d-motor, hvor det er en tærte i himlen, hvor du aldrig får lavet et spil med det. Det er stadig ret rimeligt, hvis det er lidt anakronistisk at rulle din egen 2d-motor.

For det meste bestod min spilmotor (skrevet i C ++ oven på almindelig Win32) af: - grafikklasse (et lærred på lavt niveau hvor du kan tegne linjer, polygoner eller rå pixels) - sprite-klasse til tegning af animationer og sprites ved at kombinere stykker fra et billede samt tegne bitmappet tekst - tileet-klasse til styring af teglesætbaggrund - et UI-klassehierarki med enkle komponenter ( knapper, paneler, listeboks osv.) - en simpel fysikmotor (intet fancy, bare noget der giver dig mulighed for at flytte objekter rundt med en vis hastighed og udløse kollision med andre objekter og landskabet) - en simpel lydklasse - det vigtigste spil loop / game state-maskine, der bandt alt dette sammen, sendte mus- og tastaturbeskeder rundt, sendte begivenheder til UI-objekterne, gengav alle sprites, opdaterede alle fysiske objekter osv. det er dybest set "hjertet" spil. Hvis du vil forstå, hvordan grundlæggende spil (og implicit spilmotorer) fungerer, skal du fokusere på dette område, styre spiltilstand, spilbegivenheder og hovedopdaterings- / tegningsløkken. - den platformafhængige Win32-tegningskode i bare en lille fil

Jeg skrev også nogle filkonvertere, en tegelsæt-editor og en animationseditor ved hjælp af .NET / C ++ / CLI for at gå med dem. Virkelig størstedelen af ​​arbejdet var ved at skrive sprite- og fysikklasser samt sprite-editor.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *