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.