Migliore risposta
Per un platform 2D (da lato a lato) il modo più semplice di pensare come per fare ciò, i giocatori si trasformerebbero e lo Sprite Renderer capovolgerebbe in quel modo e anche lo speed flip di Translate in quel modo. In un platform non esiste davvero alcun percorso per un nemico. Un esempio potrebbe essere qualcosa del tipo:
[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));
}
Risposta
Uno dei progetti a cui stavo lavorando quando avevo tempo (= tra i lavori: d) era un classico 2d di basso livello della vecchia scuola motore di gioco basato su sprite, adatto a platformer e simili. Solo perché.
In realtà è una cosa piuttosto divertente da affrontare, scrivere il tuo motore 2d, è abbastanza piccolo da poterlo realizzare lavora da solo entro pochi mesi Anni, quindi non è come un grande motore 3D in cui è un progetto di torta nel cielo in cui non puoi mai fare un gioco con esso. È ancora abbastanza ragionevole, anche se un po anacronistico, utilizzare il proprio motore 2d.
Per lo più il mio motore di gioco (scritto in C ++, sopra il semplice Win32) consisteva in: - classe grafica (una tela di basso livello in cui è possibile disegnare linee, poligoni o pixel grezzi) - classe sprite, per disegnare animazioni e sprite combinando pezzi da unimmagine, oltre a disegnare testo bitmap - classe tileset, per la gestione degli sfondi del set di tessere - una gerarchia di classi dellinterfaccia utente con componenti semplici ( pulsanti, pannelli, listbox, ecc.) - un semplice motore fisico (niente di speciale, solo qualcosa che ti consente di spostare gli oggetti con una certa velocità e innescare la collisione con altri oggetti e lo scenario) - una semplice classe di suoni - il gioco principale loop / game state machine che ha collegato tutto questo insieme, ha inviato messaggi di mouse e tastiera, ha inviato eventi agli oggetti dellinterfaccia utente, ha reso tutti gli sprite, aggiornato tutti gli oggetti fisici, ecc. è fondamentalmente il "cuore" del gioco. Se vuoi capire come funzionano i giochi di base (e implicitamente i motori di gioco), concentrati su questarea, gestendo lo stato del gioco, gli eventi di gioco e il ciclo principale di aggiornamento / disegno. - il codice di disegno Win32 dipendente dalla piattaforma in un piccolo file
Ho anche scritto alcuni convertitori di file, un editor di tileset e un editor di animazioni usando .NET / C ++ / CLI per utilizzarli. La maggior parte del lavoro consisteva nello scrivere le lezioni di sprite e di fisica, oltre alleditor di sprite.