Radosław Gurzyński „Fotka” – Program do przeglądania i podstawowej edycji obrazów
dr Radosław Matusik - math.uni.lodz.plradmat/tippgk/Cwiczenia11.pdfdr Radosław Matusik Unity 3D -...
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
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