Beste antwoord
Voor een 2D-platformgame (van links naar rechts) de eenvoudigste manier om te bedenken hoe als je dit zou doen, zouden de spelers transformeren en zou de Sprite Renderer op die manier omdraaien en de Vertaalsnelheid ook op die manier. Er is echt geen padvinding in een platformgame voor een vijand. Een voorbeeld zou zoiets zijn als:
[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));
}
Antwoord
Een van de projecten waar ik aan werkte toen ik tijd had (= tussen banen: d) was een zeer klassieke, old-school low-level 2d sprite-gebaseerde game-engine, geschikt voor platformgames en dergelijke. Gewoon omdat.
Het is eigenlijk best leuk om aan te pakken, je eigen 2D-engine schrijven, het is klein genoeg om er binnen een paar maanden zelfstandig werken meer dan jaren, dus het is niet als een grote 3D-engine waar het een taart in de lucht-project is waar je er nooit een spel mee kunt maken. Het is nog steeds redelijk als het een beetje anachronistisch is om je eigen 2D-engine te rollen.
Meestal bestond mijn game-engine (geschreven in C ++, bovenop gewoon Win32) uit: - grafische klasse (een laag niveau canvas waar u lijnen, polygonen of onbewerkte pixels kunt tekenen) - sprite-klasse, voor het tekenen van animaties en sprites door stukken uit een afbeelding te combineren, evenals het tekenen van bitmap-tekst - tileset-klasse, voor het beheren van tileset-achtergronden - een UI-klassehiërarchie met eenvoudige componenten ( knoppen, panelen, listbox, enz.) - een eenvoudige physics-engine (niets speciaals, gewoon iets waarmee je objecten met enige snelheid kunt verplaatsen en een botsing met andere objecten en het landschap kunt veroorzaken) - een eenvoudige geluidsklasse - het hoofdspel loop / game state machine die dit allemaal met elkaar verbond, muis- en toetsenbordberichten stuurde, gebeurtenissen naar de UI-objecten stuurde, alle sprites genereerde, alle fysische objecten bijwerkte, enz. het is eigenlijk het hart van de spel. Als je wilt begrijpen hoe basisspellen (en impliciet game-engines) werken, concentreer je dan op dit gebied, het beheren van de gamestatus, game-evenementen en de belangrijkste update / draw-lus. - de platformafhankelijke Win32-tekencode in slechts een klein bestand
Ik heb ook enkele bestandsconversieprogrammas, een tile-editor en een animatie-editor geschreven met .NET / C ++ / CLI. Het meeste werk was eigenlijk het schrijven van de lessen sprite en natuurkunde, evenals de sprite-editor.