Beste Antwort
Für einen 2D-Plattformer (Seite an Seite) ist es am einfachsten, darüber nachzudenken, wie Wenn Sie dies tun, werden die Spieler transformiert und der Sprite Renderer wird auf diese Weise und die Übersetzungsgeschwindigkeit ebenfalls umgedreht. In einem Plattformer gibt es wirklich keine Wegfindung für einen Feind. Ein Beispiel wäre etwa:
[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));
}
Antwort
Eines der Projekte, an denen ich gearbeitet habe, als ich Zeit hatte (= zwischen den Jobs: d), war ein sehr klassisches 2d der alten Schule Sprite-basierte Spiel-Engine, geeignet für Plattformer und dergleichen. Nur weil.
Es ist eigentlich eine ziemlich lustige Sache, eine eigene 2D-Engine zu schreiben. Sie ist klein genug, um sie zu erstellen arbeiten Sie innerhalb weniger Monate selbst r als Jahre, also ist es nicht wie eine große 3D-Engine, wo es ein Pie-in-the-Sky-Projekt ist, bei dem man nie ein Spiel damit machen kann. Es ist immer noch vernünftig, wenn auch etwas anachronistisch, eine eigene 2D-Engine zu rollen.
Meistens bestand meine Spiel-Engine (in C ++ über Win32 geschrieben) aus: - Grafikklasse (eine Leinwand auf niedriger Ebene) Hier können Sie Linien, Polygone oder Rohpixel zeichnen.) - Sprite-Klasse zum Zeichnen von Animationen und Sprites durch Kombinieren von Teilen aus einem Bild sowie Zeichnen von Bitmap-Text - Tileset-Klasse zum Verwalten von Tileset-Hintergründen - eine UI-Klassenhierarchie mit einfachen Komponenten ( Schaltflächen, Bedienfelder, Listbox usw.) - eine einfache Physik-Engine (nichts Besonderes, nur etwas, mit dem Sie Objekte mit einer gewissen Geschwindigkeit bewegen und Kollisionen mit anderen Objekten und der Landschaft auslösen können) - eine einfache Klangklasse - das Hauptspiel Loop- / Game-State-Machine, die all dies miteinander verknüpft, Maus- und Tastaturnachrichten gesendet, Ereignisse an die UI-Objekte gesendet, alle Sprites gerendert, alle Physikobjekte aktualisiert usw. Es ist im Grunde das "Herz" des Spiel. Wenn Sie verstehen möchten, wie grundlegende Spiele (und implizit Spiel-Engines) funktionieren, konzentrieren Sie sich auf diesen Bereich und verwalten Sie den Spielstatus, Spielereignisse und die Hauptaktualisierungs- / Zeichnungsschleife. - Der plattformabhängige Win32-Zeichnungscode in nur einer kleinen Datei
Ich habe auch einige Dateikonverter, einen Tileset-Editor und einen Animationseditor mit .NET / C ++ / CLI geschrieben. Der größte Teil der Arbeit bestand darin, den Sprite- und Physikunterricht sowie den Sprite-Editor zu schreiben.