86
ΑΝΑΠΤΥΞΗ 3D ΣΚΟΠΕΥΤΙΚΟΥ ΠΑΙΧΝΙΔΙΟΥ ΤΡΙΤΟΥ ΠΡΟΣΩΠΟΥ ΠΟΛΛΑΠΛΩΝ
ΠΑΙΚΤΩΝ ΤΥΠΟΥ ROGUELITE
Το script EnemyAI.cs ρυθμίζει την συμπεριφορά των εχθρών, όπως τον προορισμό τους,
την κίνησή τους και την επίθεση. Μέσα στην συνάρτηση της Update (Εικόνα 100) , μόνο ο host
ελέγχει αν η συμπεριφορά του εχθρού ισούται με 0 και αν ισχύει καλείται η συνάρτηση
SeekTarget(). Μετά υπολογίζεται η περιστροφή του εχθρού, το animation που πρέπει να
εκτελείται και η περίπτωση που ο εχθρός πρέπει να επιτεθεί. Στην περίπτωση της επίθεσης
γίνονται έλεγχοι πολλών συνθηκών και τελικά μπορούν να αποσταλούν δύο είδη RPC ανάλογα με
το είδος της επίθεσης του εχθρού, αν επιτίθεται από κοντά ή μακριά. Οι συναρτήσεις αυτές είναι
οι StartMeleeAttack() και StartFlyingRangedAttack() αντίστοιχα. Στην περίπτωση της
StartFLyingRangedAttack() στέλνεται και η παράμετρος της κατεύθυνσης από την σφαίρα του
εχθρού.
Εικόνα 100 Γενική συμπεριφορά εχθρών
Στην συνάρτηση SeekTarget() (Εικόνα 101) γίνεται η εύρεση των παικτών και υπολογίζεται
η ελάχιστη απόσταση μεταξύ τους, για να οριστεί ο προορισμός των εχθρών. Ελέγχεται ο στόχος
των εχθρών ώστε μόνο όταν ένας διαφορετικός παίκτης πλησιάσει πιο κοντά, να στέλνεται ένα
RPC προς όλους τους παίκτες μέσω του διακομιστή για την εκτέλεση της συνάρτησης
RPC_SetDestination() με την παράμετρο το id του παίκτη που πρέπει να κυνηγήσει ο εχθρός.