I Unity, hur implementerar jag en sökande AI i ett 2D-plattformsspel?


Bästa svaret

För en 2D-plattformsspelare (sida till sida) det enklaste sättet att tänka hur att göra detta skulle få spelarna att förändras och låta Sprite Renderer vända på det sättet och Translate-hastigheten vända på det sättet också. Det finns egentligen ingen sökning i en plattformsspelare för en fiende. Ett exempel skulle vara ungefär 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

Ett av projekten jag arbetade med när jag hade tid (= mellan jobb: d) var en mycket klassisk, lågskolan låg nivå 2d sprite-baserad spelmotor, lämplig för plattformsspelare och liknande. Bara för att.

Det är faktiskt en ganska rolig sak att ta itu med, skriva din egen 2d-motor, den är tillräckligt liten för att du ska kunna göra den arbeta själv inom några månader rathe r än år, så det är inte som en stor 3d-motor där det är en pie in the sky-projekt där du aldrig får skapa ett spel med den. Det är fortfarande ganska rimligt om det är lite anakronistiskt att rulla din egen 2d-motor.

För det mesta bestod min spelmotor (skriven i C ++, ovanpå vanlig Win32) av: - grafikklass (en låg duk där du kan rita linjer, polygoner eller råa pixlar) - sprite-klass, för att rita animationer och sprites genom att kombinera delar från en bild, samt rita bitmappad text - brickuppsättningsklass, för att hantera brickuppsatta bakgrunder - en UI-klasshierarki med enkla komponenter knappar, paneler, listbox, etc ..) - en enkel fysikmotor (inget snyggt, bara något som gör att du kan flytta objekt med viss hastighet och utlösa kollision med andra objekt och landskapet) - en enkel ljudklass - huvudspelet loop / game state-maskin som band allt detta, skickade mus- och tangentbordsmeddelanden runt, skickade händelser till UI-objekten, renderade alla sprites, uppdaterade alla fysikobjekt, osv. det är i grund och botten "hjärtat" spel. Om du vill förstå hur grundläggande spel (och implicit spelmotorer) fungerar, fokusera på detta område, hantera speltillstånd, spelhändelser och huvuduppdaterings- / dragslingan. - den plattformsberoende Win32-ritningskoden i bara en liten fil

Jag skrev också några filkonverterare, en brickredigerare och en animeringsredigerare med .NET / C ++ / CLI för att gå med dem. Verkligen var det mesta av arbetet med att skriva sprite- och fysikklasserna, samt sprite-redaktören.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *