83
ΑΝΑΠΤΥΞΗ 3D ΣΚΟΠΕΥΤΙΚΟΥ ΠΑΙΧΝΙΔΙΟΥ ΤΡΙΤΟΥ ΠΡΟΣΩΠΟΥ ΠΟΛΛΑΠΛΩΝ
ΠΑΙΚΤΩΝ ΤΥΠΟΥ ROGUELITE
Κατά την σύγκρουση της σφαίρας, γίνεται ο έλεγχος του αντικειμένου με τον οποίο
συγκρούεται. Στην περίπτωση που η σφαίρα πετύχει κάποιον εχθρό, και εφόσον αναπαραχθούν
τα κατάλληλα οπτικά εφέ, αποθηκεύεται το script EnemyStats.cs του εχθρού (Εικόνα 95). Αν το
script υπάρχει, τότε γίνεται ένας επιπλέον έλεγχος, όπου συγκρίνεται ο κάτοχος της σφαίρας με
τον παίκτη, ώστε μόνο όταν ο κάτοχος της σφαίρας πετυχαίνει τον εχθρό να σταλθεί ένα RPC στο
PhotonView του εχθρού για να κληθεί η συνάρτηση RPC_TakeDamage() με παραμέτρους την
ζημιά και τον κάτοχο της σφαίρας. Ο έλεγχος αυτός συμβαίνει, για να μην μειώνονται οι πόντοι
ζωής του εχθρού για κάθε παίκτη που υπάρχει στο παιχνίδι, αλλά μόνο μια φορά, όταν ο κάτοχος
της σφαίρας πετυχαίνει τον εχθρό.
Εικόνα 95 Σύγκρουση σφαίρας
4.2.4 Συγχρονισμός εχθρών
Οι εχθροί δημιουργούνται και κυνηγάνε τους παίκτες για να τους χτυπήσουν. Ο
συγχρονισμός τους γίνεται κυρίως από τον host όσον αφορά τον προορισμό τους, πότε
εξαφανίζονται από το περιβάλλον και πότε επιτίθενται. Τα script που συγχρονίζουν τους εχθρούς
είναι τα: EnemyAI.cs, EnemySpawner.cs και EnemyStats.cs.
Το script EnemyStats.cs περιέχει όλα τα στατιστικά του εχθρού. Για την κλιμάκωση των
στατιστικών αυτών, στέλνεται ένα RPC από τις συναρτήσεις των γύρων, για να εκτελεστεί η
ScaleStats() με παράμετρο την δυσκολία του γύρου (Εικόνα 96).