Hvordan implementerer jeg en banesøkende AI i et 2D-plattformspill i Unity?


Beste svaret

For en 2D-plattformspiller (side til side) den enkleste måten å tenke hvordan å gjøre dette ville få spillerne til å transformere seg og få Sprite Renderer til å snu på den måten og Translate-hastigheten på den måten også. Det er egentlig ingen banesøk i en plattformspiller for en fiende. Et eksempel kan være noe 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 av prosjektene jeg jobbet med da jeg hadde tid (= mellom jobbene: d), var et veldig klassisk, old school low level 2d sprite-basert spillmotor, egnet for plattformspillere og lignende. Bare fordi.

Det er faktisk en ganske morsom ting å takle, å skrive din egen 2d-motor, den er liten nok til at du kan lage den jobbe alene i løpet av noen få måneder r enn år, så det er ikke som en stor 3d-motor der det er en pie in the sky-prosjekt hvor du aldri får lage et spill med den. Det er fortsatt ganske rimelig hvis det er litt anakronistisk å rulle din egen 2d-motor.

For det meste bestod spillmotoren min (skrevet i C ++, på toppen av vanlig Win32) av: - grafikklasse (et lerret på lavt nivå hvor du kan tegne linjer, polygoner eller rå piksler) - sprite-klasse, for å tegne animasjoner og sprites ved å kombinere brikker fra et bilde, samt tegne bitmappet tekst - tileet-klasse, for å administrere tegnsettbakgrunner - et UI-klassehierarki med enkle komponenter ( knapper, paneler, listeboks osv.) - en enkel fysikkmotor (ikke noe fancy, bare noe som lar deg bevege objekter rundt med litt fart og utløse kollisjon med andre objekter og naturen) - en enkel lydklasse - hovedspillet loop / game state machine som bundet alt dette sammen, sendte mus- og tastaturmeldinger rundt, sendte hendelser til UI-objektene, gjengitt alle sprites, oppdaterte alle fysikkobjektene osv. det er i utgangspunktet "hjertet" til spill. Hvis du vil forstå hvordan grunnleggende spill (og implisitt spillmotorer) fungerer, kan du fokusere på dette området, administrere spilltilstand, spillhendelser og hovedoppdaterings- / tegningsløyfen. - den plattformavhengige Win32-tegningskoden i bare en liten fil

Jeg skrev også noen filkonverterere, et fliseredigeringsprogram og en animasjonseditor ved hjelp av .NET / C ++ / CLI for å gå med dem. Egentlig var det meste av arbeidet med å skrive sprite- og fysikkklassene, samt sprite-redaktøren.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *