dr Radosław Matusik - math.uni.lodz.plradmat/tippgk/Cwiczenia11.pdfdr Radosław Matusik Unity 3D -...

12
Unity 3D - sztuczna inteligencja przeciwnika dr Radoslaw Matusik www.math.uni.lodz.pl/˜radmat dr Radoslaw Matusik Unity 3D - sztuczna inteligencja przeciwnika

Transcript of dr Radosław Matusik - math.uni.lodz.plradmat/tippgk/Cwiczenia11.pdfdr Radosław Matusik Unity 3D -...

Unity 3D - sztuczna inteligencja przeciwnika

dr Radosław Matusik

www.math.uni.lodz.pl/˜radmat

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

Cel ćwiczeń

Celem bieżących ćwiczeń jest stworzenie przeciwnikawyposażonego w prostą sztuczną inteligencję. Przeciwnik będziejedynie podążał za naszym graczem, żeby z bliska zadać namobrażenia. Będzie również posiadał funkcjonalność śmierci.Uwaga! Sensownie jest teraz ustawić maksymlaną liczbę punktówżycia (czyli 100) i wyświetlać zielony pasek.

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

Tworzymy przeciwnika z prostym AI

Przeciwnik, którego będziemy tworzyć, będzie nam zagrażał wlabiryncie. Przejdźmy zatem na pierwszą scenę projektu ”labirynt”.Model przeciwnika (Zombie 0 3) można pobrać z mojej stronywww.math.uni.lodz.pl/˜radmat/programy i następnie trzeba go umieścić wlabiryncie.

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

Rysunek: Napotykamy przeciwnika

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

Dodajemy możliwość poruszania się przeciwnika

W znany sposób dodajemy tag przeciwnik.

Z Component | Physics dodajemy Box Collider, któryustawiamy na nieco większy od naszego modelu (za pomocąSize).

Z Component | Physics dodajemy Sphere Collider iustawiamy Is Trigger. Ponieważ to będzie zasięg wzrokunaszego przeciwnika, dlatego ustawiamy na dużo większy odsamej postaci (za pomocą Radius).

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

Rysunek: Ustawienia Box Collidera i Sphere Collidera

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

Skrypt przeciwnik ai.cs

public class przeciwnik_ai : MonoBehaviour{public float szybkoscChodu = 5.0f;public float odlegloscAtaku = 3.0f;public float zasiegAtaku = 10.0f;public float opoznienieAtaku = 1.0f;public float zyciePrzeciwnika = 10.0f;private float zegar = 0;

void Uderzenie(){Destroy(gameObject);}

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

void OnTriggerStay(Collider o){if(o.tag.Equals("Player")){Quaternion celObrotu = Quaternion.LookRotation(o.transform.position - transform.position);

float oryginalneX = transform.rotation.x;float oryginalneZ = transform.rotation.z;

Quaternion ostatecznyObrot = Quaternion.Slerp(transform.rotation, celObrotu,

5.0f * Time.deltaTime);ostatecznyObrot.x = oryginalneX;ostatecznyObrot.z = oryginalneZ;transform.rotation = ostatecznyObrot;

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

float odleglosc = Vector3.Distance(transform.position, o.transform.position);if(odleglosc > odlegloscAtaku){transform.Translate(Vector3.forward *

szybkoscChodu * Time.deltaTime);}else{if(zegar <= 0){o.SendMessage("Uderzenie",

zasiegAtaku);zegar = opoznienieAtaku;}}

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

if(zegar > 0){zegar -= Time.deltaTime;}}}}

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

Rysunek: Przeciwnik odwraca się w naszą stronę i podąża za nami

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika

Ćwiczenie 1

Proszę dodać możliwość strzelania przez naszego bohatera doprzeciwnika. Przeciwnik ma ginąć (czyli znikać z planszy) pooddaniu jednego, celnego strzału przez naszego gracza. Proszędodać dźwięk ginięcia przeciwnka oraz efekt postrzału.

dr Radosław Matusik Unity 3D - sztuczna inteligencja przeciwnika