Στην άσκηση αυτή θα εξοικειωθείτε με τη διαχείριση ανελκυστήρων, χρησιμοποιώντας το λογισμικό Valve Editor.



Σχετικά έγγραφα
ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

Σχετική κίνηση αντικειμένων

Ελέγξτε την ταινία σας

Αναπαραγωγή με αρχεία ήχου

Σενάριο 16: Ο κόσμος του Robby

Δημιουργώντας εφέ φωτισμού στο περιβάλλον 3Ds Max χρησιμοποιώντας βασικά εργαλεία

Texturing, Animation, Lighting, Rendering

Εκκίνηση προγράμματος

Δημιουργώντας 3D μοντέλα από εικόνες

Σενάριο 17: Παιχνίδι μνήμης με εικόνες

1ο Φύλλο Εργασίας. της παλέτας Ήχος. Πώς μπορούμε να εισάγουμε και να αναπαράγουμε έναν ήχο;

Δημιουργώντας 3D μοντέλα από ακμές με χρήση λογικών τελεστών

VENUS VHS-704 ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΣΥΣΤΗΜΑ ΘΥΡΟΤΗΛΕΟΡΑΣΗΣ 2 ΚΑΛΩΔΙΩΝ

Οδηγός Χρήσης της Εφαρμογής Web based Video Conference

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: GAME MAKER. Ονοματεπώνυμο:

Copyright 2017 HP Development Company, L.P.

Δημιουργώντας 3D μοντέλα - Εργαλείο Spin

Πίνακες, περιγράµµατα και σκίαση

ΛΕΙΤΟΥΡΓΙΑ ΟΠΛΙΣΗΣ ΚΑΙ ΑΦΟΠΛΙΣΗΣ ΣΥΝΑΓΕΡΜΟΥ ΜΕ ΧΡΟΝΟΚΑΘΗΣΤΕΡΗΣΗ.

(3) Από την εργαλειοθήκη επιλέξτε το εργαλείο «ετικέτας (Label)». Δημιουργήστε μια ετικέτα στην φόρμα σας.

Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης

Δημιουργώντας γραφικά στο περιβάλλον 3Ds Max χρησιμοποιώντας βασικά εργαλεία

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ: Εντολές κίνησης και στροφής στο προγραμματιστικό περιβάλλον Scratch. ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Εισαγωγή στην επανάληψη

Τροποποίηση συνδυασμών κίνησης

Ο Οδηγός γρήγορης εκκίνησης

Ο Μπούκλας παίζει και μουσική όταν στην πράσινη σημαία γί νει κλικ. αίξε ήχο _ χρι τέλους περίμενε για _ χρόνους. περίμενε για δευτερόλεπτα.

Άσκηση 6 η Ανύψωση Σχημάτων. Στόχος της άσκησης

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΓΙΑ ΤΟΝ ΕΛΕΓΧΟ ΤΩΝ HX-GO02 & HX-GO1

Σενάριο 18: Ραβδογράμματα Πληθυσμού

2. Κάντε κλικ στο παράθυρο όψης Top για να το ενεργοποιήσετε, ώστε να σχεδιάσετε το πάτωµα του δωµατίου.

Πρακτική εφαρμογή στην ειδικότητα: Λογισμικό για τη δημιουργία εργασίας εξαμήνου

Πόμολο Gola. Πόμολο Gola

ΕΠΕΞΕΡΓΑΣΙΑ ΒΙΝΤΕΟ ΜΕ ΤΟ ΠΡΟΓΡΑΜΜΑ VSDC FREE VIDEO EDITOR

Μαθήματα Scratch -Δραστηριότητα 1 Παλέτα Κίνηση

Πρακτικές συμβουλές κατά την πληκτρολόγηση ., ; :! ( ) " " Άνοιγμα και αποθήκευση εγγράφου Αρχείο, Άνοιγμα. Αρχείο / Αποθήκευση

Κεφάλαιο 1 Χρήση προτύπου 2. Κεφάλαιο 2 Τροποποίηση μιας παρουσίασης 9. Κεφάλαιο 4 Προσθήκη αντικειμένων 26. Κεφάλαιο 5 Ειδικά εφέ 35

αντίστοιχο γεγονός. Όταν όντως το κουμπί

Γνωρίστε το χώρο εργασίας του PowerPoint

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

Δημιουργία παρουσιάσεων με το PowerPoint

Παλέτα Κίνηση. Καλό είναι πριν ξεκινήσετε το παρακάτω φυλλάδιο να έχετε παρακολουθήσει τα παρακάτω δύο videos: a) Εισαγωγή στο περιβάλλον του Scratch

B) Ετοιμάζοντας μια Παρουσίαση

Δημιουργώντας σχεδιοκίνηση στο περιβάλλον 3Ds Max χρησιμοποιώντας βασικά εργαλεία

ΕΛΛΗΝΙΚΑ. Διαχειριστής Πλήκτρων Μacro Εγχειρίδιο Χρήστη

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Εγχειρίδιο του Accerciser, έκδοση 0.2.0

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα

Slalom Race Computer Game on Scratch

Γρήγορη έναρξη. Επέκταση εμβέλειας WiFi N300 Μοντέλο EX2700

Προγραμματισμός. Το περιβάλλον του scratch

Atlantis - Νέο user interface

Vodafone Business Connect

ΠΑΡ. 6.2: ΦΩΣ ΚΑΙ ΣΚΙΑ ΣΤΟΧΟΙ: Ο μαθητής θα πρέπει:

Οδηγός χρήσης. EurobankTrader

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Vodafone Business Connect

ΟΔΗΓΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΑΙ ΧΡΗΣΗΣ ΤΟΥ. WiFi V-Timer ΕΚΔΟΣΗ 1 Η

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: SCRATCH. Ονοματεπώνυμο:

Παλέτα Κίνηση. Για να μετακινήσουμε ένα αντικείμενο χρησιμοποιούμε την εντολή ΚΙΝΗΣΟΥ

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

ιαµόρφωση σελίδας Προεπισκόπηση Εκτύπωση

Movie Maker (Δημιουργία βίντεο)

ΤΗΛΕΧΕΙΡΙΣΤΗΡΙΟ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΤΗ. Διαβάστε προσεκτικά το εγχειρίδιο χρήστη πριν τη λειτουργία. Φυλάξτε το παρόν εγχειρίδιο για μελλοντική αναφορά.

Αλλαγή της εμφάνισης κειμένου: μέγεθος γραμματοσειράς, είδος γραμματοσειράς

Οδηγίες χρήσης Πώς να χρησιμοποιήσετε το FastBanner

Φώτα - Εκτύπωση Αποθήκευση εικόνας

Σημειώσεις στο PowerPoint

WiFi V-Timer ΕΚΔΟΣΗ 2Η

Microsoft PowerPoint 2007

HP Workspace. Οδηγός χρήσης

Διαδικασία Χρήσης Module Αναλυτικής Λογιστικής

Εργαστήριο 6 Μικρή Πολυκατοικία στο FINE Μέρος Α : Εισαγωγή & Ευθυγράμμιση των κατόψεων των ορόφων της Πολυκατοικίας

ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ. Ε: ΠΟΙΕΣ ΕΙΝΑΙ ΟΙ ΠΡΟΫΠΟΘΕΣΕΙΣ ΤΟΠΟΥ ΚΑΤΟΙΚΙΑΣ ΓΙΑ ΟΣΟΥΣ ΘΕΛΟΥΝ ΝΑ ΑΓΩΝΙΣΤΟΥΝ; Α: Αυτή η διοργάνωση αφορά μόνο την Ελλάδα, επομένως:

1. Κάντε λήψη και εγκατάσταση της εφαρμογής στο κινητό σας.

Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word

Interactive Power Point

7. Επαναλήψεις (Loops) Προγραμματισμός EV3 Ακαδημία Ρομποτικής 58

Ράβδος ήχου. Οδηγός έναρξης HT-CT770

Εγχειρίδιο Χρήσης V3.0

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48

Atlantis - Νέο user interface

GPS NAVIGATION SYSTEM QUICK START USER MANUAL

Εγχειρίδιο: Περιεχόμενα

Ρύθμιση Stylitis-10+ WiFi

SMART Ink. Λογισμικό λειτ ουργικού συστ ήματ ος Mac OS X. Οδηγός χρήστ η

Το Κ2 είναι ένα παιχνίδι για 1 έως 5 παίκτες, ηλικίας 8 ετών και άνω, με διάρκεια περίπου 60 λεπτά.

Οδηγίες Χρήσης Εφαρμογής

Δημιουργία παρουσιάσεων (Power Point)

Η εντολή «επανέλαβε Χ»

Οδηγίες εγκατάστασης και ενεργοποίησης. της εφαρμογής. i-spirit «ηλεκτρονικής τιμολόγησης» & ενημέρωσης #mydata

Σηµαντικές παρατηρήσεις σχετικά µε το backround:

Transcript:

Στην άσκηση αυτή θα εξοικειωθείτε με τη διαχείριση ανελκυστήρων, χρησιμοποιώντας το λογισμικό Valve Editor. Ας ξεκινήσουμε λοιπόν! Η οντότητα func_train είναι η πιο ευρέως χρησιμοποιούμενη για τη δημιουργία ανελκυστήρων (elevators) που χρησιμοποιούνται στο παιχνίδι Half-Life. Η οντότητα αυτή είναι πολύ ευπροσάρμοστη σε πολλές εφαρμογές, οπότε τα ασανσέρ είναι μία από όλες αυτές! func_train vs. func_tracktrain entities Οι κύριες διαφορές ανάμεσα σε αυτές τις δύο οντότητες είναι ότι: 1. Μία σχεδίαση func_tracktrain προσανατολίζεται ανάλογα με το αντικείμενο που ακολουθεί (track), ενώ μία σχεδίαση func_train όχι 2. Οι οντότητες func_tracktrain μπορούν να ελέγχονται από τον παίχτη-χρήστη, όπως ακριβώς αν οδηγούσε ένα τραίνο που θα ήλεγχε την ταχύτητά του. Οι οντότητες αυτές είναι λιγότερο ευπροσάρμοστες αλλά παρουσιάζουν μεγαλύτερο ενδιαφέρον ως προς τη λειτουργικότητα που προσφέρουν Ρυθμίζοντας το χάρτη Στην άσκηση αυτή θα χρησιμοποιήσετε οντότητες func_train και μπορείτε να βασιστείτε στο αρχείο functrainelevinitial.rmf. Ο χάρτης διαθέτει δύο επίπεδαορόφους, όπου μία οντότητα func_train λειτουργεί ως ένας απλός ανελκυστήρας που συνδέει τους δύο χώρους. Αρχικά λοιπόν δημιουργήστε ένα βασικό δωμάτιο και προσαρτήστε έναν ακόμη όροφο από πάνω του. Δημιουργήστε μία τρύπα στο δάπεδο του πάνω δωματίου (λειτουργία carving) και κατασκευάστε την πλατφόρμα που θα αποτελεί το ασανσέρ (θα είναι "ανοιχτό" και δεν θα περικλείεται από τοίχους-τοιχώματα, όπως φαίνεται στο διπλανό σχήμα). Μπορείτε να εφαρμόσετε μεταλλική υφή (πληκτρολογώντας 'gen' στο πεδίο Texture Browser), και να τοποθετήσετε ένα σύνολο σχεδίων γύρω γύρω με υφή κίτρινης σήμανσης (προειδοποίηση κινδύνου δηλαδή), αφήνοντας χώρο για να τοποθετηθούν οι κολώνες-οδηγοί πάνω στις οποίες θα κινείται το ασανσέρ. Αυτές οι κολώνες τοποθετούνται για να προσδώσουμε μια πιο αληθοφανή εντύπωση, δεν θα παίξουν σημαντικό ρόλο στη λειτουργικότητα της κίνησης. Στην πλατφόρμα αυτή, στην παρούσα φάση, δε μπορεί να ενσωματωθεί καμία άλλη οντότητα (π.χ. φωτισμός που να ακολουθεί την κίνηση ή ένα αφημένο όπλο πάνω στην πλατφόρμα). Επίσης, αξίζει να σημειωθεί πως ο φωτισμός αυτών των οντοτήτων λαμβάνεται από το φωτισμό του χώρου από τον οποίο εκκινούν, γεγονός που "χαλάει" το ρεαλισμό σε αρκετά παιχνίδια. ΑΝ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΤΟ ΑΡΧΕΙΟ, Η ΣΧΕΔΙΑΣΗ ΕΙΝΑΙ ΗΔΗ ΕΤΟΙΜΗ! Δημιουργία ανελκυστήρα- Δαμιανάκης Α. - Λιβανός Γ. Σελίδα 1

Βασικές ιδιότητες Στο σημείο αυτό, εφόσον έχετε ολοκληρώσει τη σχεδίαση, μπορείτε να ορίσετε τις ιδιότητες της οντότητας func_train (θα αντιστοιχεί στο αντικείμενο "πλατφόρμα ασανσέρ"), όπως τους ήχους αναπαραγωγής και την αρχική ταχύτητα κίνησης (όσο το ασανσέρ ανεβοκατεβαίνει η ταχύτητα στις ενδιάμεσες θέσεις μπορεί να αλλάξει). Ονομάστε την οντότητα ως elev και την πρώτη θέση-στάση ως elev_1. Ορίζοντας το μονοπάτι (Path) Στη συνέχεια, δημιουργήστε τα σημεία του μονοπατιού, τοποθετώντας το σημείο οντότητα path_corner σε δύο θέσεις - μία στον πάνω όροφο και μία στον κάτω. Είναι πολύ σημαντικό να γίνει σωστά η τοποθέτηση αυτή - το δάπεδο του ανελκυστήρα ευθυγραμμίζεται ακριβώς στη μέση των σημείων, οπότε βεβαιωθείτε πως το μικρό 'X' στη μέση της οντότητας είναι δεξιά από το 'X' στη μέση της πλατφόρμας και στις δύο όψεις top και side views. Ο καλύτερος τρόπος για να το επιτύχετε είναι να σύρετε την πλατφόρμα στις θέσεις που θέλετε να σταματά ώστε να λαμβάνετε τα path entities στη σωστή θέση. Τοποθετήστε την πρώτη οντότητα path_corner στο σημείο από το οποίο θέλετε να εκκινεί το ασανσέρ (κάτω όροφος) κι ονομάστε τη elev_1. Η δεύτερη οντότητα θα ονομαστεί elev_2 και θα τοποθετηθεί στον πάνω όροφο. Ο επόμενος στόχος/σημείο και για τις δύο οντότητες θα είναι το σημείο που θέλετε να σταματήσει το ασανσέρ. Υποθέτοντας ότι ο ανελκυστήρας κάνει μία στάση ανάμεσα στους ορόφους, η επόμενη στάση για την πρώτη οντότητα θα είναι το σημείο elev_2 και για τη δεύτερη το σημείο elev_1, έτσι ώστε να ολοκληρωθεί η κλειστή διαδρομή κίνησης. Ενεργοποιήστε τη σημαία wait for retrigger και για τις δύο οντότητες. Με την ενέργεια αυτή, το ασανσέρ σταματά σε έναν όροφο και περιμένει να πατηθεί το αντίστοιχο κουμπί (ή να ενεργοποιηθεί ένας trigger) για να ξεκινήσει να κινείται πάλι. Ουσιαστικά, ο ανελκυστήρας δε χρειάζεται να δημιουργηθεί στο σημείο που θέλετε μόλις ξεκινά το παιχνίδι, θα μεταφερθεί αυτόματα στη μέση του σημείου που έχει οριστεί ως first stop target. Για να αλλάξετε το φωτισμό, τοποθετήστε τον ανελκυστήρα σε ένα σκοτεινό χώρο κάπου αλλού στο χάρτη και εισάγετε φώτα γύρω γύρω, όπως εσείς επιθυμείτε. Όταν το παιχνίδι ξεκινά, το ασανσέρ θα "μεταφέρει" το φωτισμό του από το σημείο που ήταν στο χάρτη και θα εμφανιστεί στον παίκτη στο σημείο που έχει οριστεί ως first stop target. Με τον τρόπο αυτό μπορείτε να δώσετε διάφορα εφέ φωτισμού στην πλατφόρμα (π.χ. φωτισμός από κάτω, από το πλάι, κ.λ.π.). Δημιουργία ανελκυστήρα- Δαμιανάκης Α. - Λιβανός Γ. Σελίδα 2

Τα κουμπιά ενεργοποίησης Στο σημείο αυτό χρειάζεται να δημιουργήσετε ένα ζεύγος κουμπιών (ή απλά triggers), ένα στον πάνω όροφο κι ένα στον κάτω. Τα κουμπιά αυτά μπορείτε να τα ορίσετε να έχουν διάφορες λειτουργικότητες: να σταματούν το ασανσέρ σε ενδιάμεση θέση, να αλλάζουν χρώμα, κ.λ.π. Δημιουργήστε τα δύο κουμπιά με όποιο τρόπο θέλετε, αρκεί να είναι όμως οντότητες κλάσης func_button. Ορίστε την παράμετρο target στην τιμή elev, τη σημαία don't move σε on και προσθέστε εφέ ήχου. Οι ιδιότητες Delay before trigger και delay before reset είναι στοιχεία που απαιτούν προσεκτικό χειρισμό. Η παράμετρος Delay before trigger είναι χρήσιμη όταν το κουμπί δεν είναι κοντά στην πλατφόρμα, έτσι ώστε ο "παίχτης" να προλάβει να μεταπηδήσει στην πλατφόρμα μόλις πατήσει το κουμπί. Mπορείτε λοιπόν, παίζοντας το παιχνίδι, να υπολογίσετε πόσο χρόνο χρειάζεται για να "περπατήσετε" από τη θέση του κουμπιού στη θέση της πλατφόρμας. Ορίστε την καθυστέρηση σε χρόνο μεγαλύτερο από αυτόν που υπολογίσατε για να είστε σίγουροι! Ενεργοποιώντας τη σημαία toggle μπορεί να δημιουργήσετε πρόβλημα, διότι η καθυστέρηση πριν το reset αγνοείται, επιτρέποντας στον παίχτη να ενεργοποιεί το κουμπί οπουδήποτε, κάτι το οποίο δεν είναι επιθυμητό. Δοκιμή υλοποίησης Ο ανελκυστήρας θα πρέπει να λειτουργεί σωστά. Δοκιμάστε να τοποθετήσετε κάποια κιβώτια δίπλα στην πλατφόρμα και σέρνοντάς τα να τα ανεβοκατεβάζετε με το ασανσέρ. Μια ακόμη πιο διασκεδαστική προσθήκη είναι να ενεργοποιήσετε την ιδιότητα damage on crush της οντότητας func_train ώστε ο παίχτης να κινδυνεύει να τραυματιστεί αν εγκλωβιστεί ανάμεσα στο δάπεδο και την πλατφόρμα! Επίσης, υπάρχει και η ιδιότητα fire on pass για τις οντότητες path_corner, ώστε να δημιουργείται ένα είδος έκρηξης-ανάφλεξης όταν το ασανσέρ περνάει από συγκεκριμένο σημείο. Δημιουργία ανελκυστήρα- Δαμιανάκης Α. - Λιβανός Γ. Σελίδα 3

Η διαχείριση κινούμενων πορτών ανελκυστήρα απαιτεί μια ιδιαίτερη διαχείριση, μιας και το παιχνίδι Half- Life δεν προγραμματίστηκε ώστε να περιέχει οντότητες οι οποίες μετακινούνται μαζί με άλλα αντικείμενα. Φανταστείτε λοιπόν ότι ο ήρωας "φτάνει" στον ανελκυστήρα, η πόρτα του οποίου είναι ανοιχτή, εισέρχεται στο εσωτερικό του και πατά το κουμπί, οπότε κι η πόρτα κλείνει πίσω του. Όταν ο ανελκυστήρας φτάσει στο επιθυμητό σημείο, η πόρτα ανοίγει και πάλι. Σε αυτό το σενάριο λοιπόν, η πόρτα "ακολούθησε" την κίνηση του ανελκυστήρα, άνοιξε κι έκλεισε την κατάλληλη χρονική στιγμή. Ας το υλοποιήσουμε στο περιβάλλον του Hammer Valve editor. Το αρχείο αναφοράς είναι το eledoorsinitial.rmf, ενώ το αρχείο με το τελικό αποτέλεσμα είναι το eledoorsfinal.rmf. Ο ανελκυστήρας (Elevator) Πώς θα κατορθώσουμε να κάνουμε τις πόρτες να ακολουθούν την κίνηση του ασανσέρ; Η λύση είναι να επιτρέψουμε στο αντικείμενο-πόρτα να ακολουθεί το δικό του path_corner, όπως ακριβώς κάνει ο ανελκυστήρας. Στην άσκηση αυτή, ο ανελκυστήρας είναι ένα κλειστό δωμάτιο, οπότε υπάρχει κάποια πόρτα η οποία "σφραγίζει" τη είσοδο/έξοδο του παίχτη. Για να σχεδιάσετε το ασανσέρ, δημιουργήστε ένα κύβο διαστάσεων δική σας προτίμησης (π.χ. 128 x 128 units). Τρυπήστε (Hollow) τον κύβο σε ένα τοίχο πάχους 4 units αλλά μην τον μετατρέψετε ακόμη σε οντότητα func_train. Τοποθετήστε την πρώτη οντότητα path_corner απευθείας στο κέντρο του κουτιού που δημιουργήσατε. Επιλέξτε τον κύβο και παρατηρήστε τον σε όλες τις 2D views, οπότε και ο μικρός γκρι "σταυρός" στο κέντρο του θα σας υποδείξει ποιο είναι το σημείο στο οποίο πρέπει να τοποθετηθεί η οντότητα path_corner. Δε χρειάζεται να ορίσετε ακόμη τις ιδιότητες της οντότητας, αφού δεν έχει δημιουργηθεί ακόμη ο ανελκυστήρας. Επιλέξτε την πλευρά στην οποία θέλετε να τοποθετήσετε την πόρτα εισόδου/εξόδου. Κόψτε (clip) τον τοίχο στις επιθυμητές διαστάσεις. Προσέξτε ώστε η πόρτα που θα τοποθετήσετε και ο τοίχος να είναι ungrouped αντικείμενα. Επιλέξτε το αντικείμενο Door 1 και ορίστε το ως func_train entity. Ονομάστε το door1 και ορίστε του ως ιδιότητα first stop target την τιμή door1_pc2. Κάντε το ίδιο για την άλλη πόρτα, ονομάζοντάς τη door2 κι ορίζοντας την ιδιότητα first stop target στην τιμή door2_pc2. Τοποθετήστε οντότητες path_corners στο κέντρο κάθε πόρτας και στη συνέχεια μετακινείστε κάθε μία από αυτές στην επιθυμητή θέση που θα παραμένουν ανοιχτές, τοποθετώντας άλλη μία οντότητα path_corner στο κέντρο της πόρτας στην τελική θέση. Ένα παράδειγμα αποτελέσματος φαίνεται στην παρακάτω εικόνα: Δημιουργία ανελκυστήρα- Δαμιανάκης Α. - Λιβανός Γ. Σελίδα 4

Τοποθετείστε 2 ακόμη path_corners στο ίδιο σημείο όπως κάνατε και στις αντίστοιχες οντότητες της κλειστής πόρτας pc1. Στο τελικό σχέδιο, θα πρέπει να έχετε 7 path_corners, 6 για τις πόρτες κι ένα για τον ανελκυστήρα. Επιλέξτε όλα τα path_corners κι αντιγράψτε τα. Μετακινείστε τα προς την κάτω μεριά του χάρτη και ευθυγραμμίστε τα ακριβώς κάτω από τα αρχικά. Θα χρειαστεί επίσης να προσθέστε ένα trigger ενσωματωμένο σε μία οντότητα func_button ή func_rot_button, η οποία θα λειτουργήσει ως το κουμπί ενεργοποίησης. Προσθέστε υφή στο αντικείμενοκουμπί και τοποθετήστε το εξωτερικά του ανελκυστήρα. Θα χρειαστεί να βάλετε κι ένα "ψεύτικο" κουμπί εσωτερικά, δίνοντας την ψευδαίσθηση ότι υπάρχει και κουπί ενεργοποίησης εσωτερικά. Αντιγράψτε όλα αυτά τα αντικείμενα και τοποθετήστε τα στην ίδια σχετική θέση με τα κατώτερα path_corners. Προσέξτε ότι ο ανελκυστήρας δεν έχει γίνει ακόμη οντότητα func_train διότι με τον τρόπο αυτό το κουμπί κλήσης θα μετακινούνταν μαζί με τον ανελκυστήρα. Επιλέξτε τα μέρη που αποτελούν τον ανελκυστήρα (εκτός από τις πόρτες), μαζί με το "ψεύτικο κουμπί" και μετατρέψτε σε οντότητα func_train, με όνομα ele και First Stop target την τιμή ele_p1. Το κουμπί func_button δεν θα πρέπει να αποτελεί μέρος του group ασανσέρ! Ορίζοντας τα path_corners Έχουμε δημιουργήσει διάφορα σημεία path_corners, και για την οντότητα func_train του ασανσέρ και για την οντότητα func_train των πορτών, σε πάνω και κάτω όροφο. Οι ρυθμίσεις για κάθε σημείο περιγράφονται παρακάτω: Elevator PC (path_corner) Name: ele_p1 Next Stop Target: ele_p2 Fire on pass: eg_upper1 [eg_lower1 για το κάτω path_corner]. Flag: Wait for retrigger: checked Δημιουργία ανελκυστήρα- Δαμιανάκης Α. - Λιβανός Γ. Σελίδα 5

Door1 PC 1 Name: door1_pc1 Next stop target: door1_pc2 Flag: Wait for retrigger: NOT checked Door1 PC 2 (για την ανοιχτή πόρτα). Name: door1_pc2 Next Stop Target: door1_pc3 Flag: Wait for retrigger: CHECKED Door1 PC 3 ίδια θέση με το PC 1. Name: door1_pc3 Next Stop Target: door1_pc4 Fire on Pass: elemm Wait here (secs): 0.1 [door2_pc3 επίσης σε 0.1 delay, door1_pc6 και door2_pc6 έχουν τιμή 0.15 delay] Flag: Wait for retrigger: NOT checked Οι ίδιες ρυθμίσεις ισχύουν και για τις ιδιότητες και τα χαρακτηριστικά της πόρτας Door 2 (δημιουργήστε διπλότυπα δηλαδή για τη νέα πόρτα), ονομάστε τα κάτω path_corners ξεκινώντας από τo PC (path corner) που βρίσκεται στην ίδια θέση ως PC1, ονομάζοντάς το doorx_pc4 κλπ, μέχρι να φτάσετε την τελική αρίθμηση PC 6, η οποία θα έχει ως next stop target το ίδιο με αυτό του doorx_pc1. Χειρισμός ανελκυστήρα και κουμπιών Για να λειτουργήσουν όλα σωστά, χρειάζεται να δημιουργήσουμε πολλά και διαφορετικά είδη οντοτήτων. Επιπλέον λοιπόν, απαιτείται να ρυθμίσουμε 3 οντότητες multimanager, 1 οντότητα global και μία οντότητα multisource. Οι ρυθμίσεις και για τις τρεις οντότητες θα αφορούν στην παραδοχή ότι η κίνηση του ανελκυστήρα δεν θα διακόπτεται ή ενεργοποιείται όσο ένα κουμπί είναι ήδη ενεργό, κι ότι αυτός καλείται από τον πάνω όροφο: Ρυθμίσεις "πάνω" σετ οντοτήτων: Upper env_global: Name: eg_upper1 Global State to Set: egupper1 Trigger Mode: Toggle Initial State: On FLAG: Set Initial State: CHECKED Δημιουργία ανελκυστήρα- Δαμιανάκης Α. - Λιβανός Γ. Σελίδα 6

Upper multisource Name: ms_upper1 Global State Master: egupper1 [The state set by the upper global] Upper door multimanager Name: doormm Key: door1, Value: 0.1 Key: door2, Value: 0.1 Upper elevator multimanager Name: elemm Key: ele, Value: 0.1 Upper state multimanager Name: mm_upper1 Key: eg_upper1, Value: 0.1 Key: doormm, Value: 0.1 Upper Call button Το πάνω κουμπί func_button θα πρέπει να έχει ως στόχο (target) την τιμή mm_upper1 ώστε να ενεργοποιεί τον πάνω Multimanager και ως Master την τιμή ms_upper1 ώστε να ρυθμίζει την κατάστασή του από το πάνω αντικείμενο Multisource. Επίσης, χρειάζεται η ρύθμιση των attributes Render Mode σε Texture και του FLAG ως Not Solid. Ρυθμίσεις "κάτω" σετ οντοτήτων: Θα πρέπει να υπάρχει ο ίδιος αριθμός path_corners και για τις "κάτω" οντότητες. Η διαφορά είναι ότι δε χρειάζεται να χρησιμοποιήσουμε τα κάτω path_corner door1_pc6 ή door2_pc6 για να ενεργοποιήσουμε το elemm, αλλά θα το κάνουμε με μία οντότητα func_button. Οι ρυθμίσεις είναι οι ακόλουθες: Lower env_global: Name: eg_lower1 Global State to Set: eglower1 Trigger Mode: Toggle Initial State: OFF FLAG: Set Initial State: CHECKED Lower multisource Name: ms_lower1 Global State Master: eglower1 [η κατάσταση που ορίστηκε από την κάτω οντότητα global] Δημιουργία ανελκυστήρα- Δαμιανάκης Α. - Λιβανός Γ. Σελίδα 7

Lower state multimanager Name: mm_lower1 Key: ele, Value: 1.1 Key: eg_lower1, Value: 0.1 Key: doormm, Value: 0.1 Lower Call button Το κάτω κουμπί func_button πρέπει να έχει ως target την τιμή mm_lower1 ώστε να ενεργοποιεί τον κάτω Multimanager και ως Master την τιμή ms_lower1 ώστε να λαμβάνει την κατάσταση State από το κάτω Multisource. Επίσης οι τιμές του attribute Render Mode θα είναι Texture και του FLAG θα είναι Not Solid. ΕΠΕΞΗΓΗΣΗ ΛΕΙΤΟΥΡΓΙΑΣ Η χρήση οντοτήτων multisource και global γίνεται ώστε σε περίπτωση πολλών παιχτών να αποφεύγεται το σταμάτημα του ανελκυστήρα σε μία ενδιάμεση θέση και η "επίθεση" να γίνεται μόνο όταν οι πόρτες είναι ανοιχτές. Αυτό που συμβαίνει στην πραγματικότητα είναι πως όταν πατιέται το κουμπί του ανελκυστήρα, η οντότητα func_button που κρύβεται πίσω του ενεργοποιεί την οντότητα mm_upper1 ( ο "πάνω" multimanager), αναγκάζοντας τον "πάνω" env_global να απενεργοποιήσει το κουμπί που μόλις πατήθηκε και να ενεργοποιήσει τις πόρτες. Όταν τώρα οι πόρτες κλείσουν, ενεργοποιούν την οντότητα elemm elevator multimanager, η οποία αναγκάζει το ασανσέρ να μετακινηθεί προς τα κάτω. Η αντίστοιχη διαδικασία γίνεται στον "κάτω" όροφο, μιας και ο ανελκυστήρας έχεις ενεργοποιήσει τον "κάτω" env_global μέσω της "κάτω" οντότητας path_corner και έχει κάνει ενεργό το κουμπί του. Είναι σημαντικό να ΜΗΝ αλλάζετε την ταχύτητα του ανελκυστήρα χρησιμοποιώντας την ιδιότητα New train Speed της οντότητας path_corners, διότι παράγει περίεργα φαινόμενα, όπως παραμόρφωση της πόρτας. Επίσης, θα πρέπει και ο ανελκυστήρας και οι πόρτες να έχουν τις ίδιες ρυθμίσεις ταχύτητας. Σημεία για προβληματισμό... Μόλις ξεκινήσετε να "παίξετε" τον χάρτη, ίσως χρειαστεί να ρυθμίσετε το χρονισμό των multimanagers, ανάλογα με το μέγεθος του ανελκυστήρα. Αν οι πόρτες ανοίγουν πολύ γρήγορα, καθυστερήστε την εκκίνησή τους με τον door multimanager ή αυξήστε την καθυστέρηση του elevator multimanager ή ακόμη να ρυθμίσετε το attribute Wait Here (secs) των οντοτήτων path_corners. Μία τελευταία λεπτομέρεια που πρέπει να λάβετε υπόψη είναι να χρησιμοποιείτε multisources και globals για τον έλεγχο των πορτών χρησιμοποιώντας τις οντότητες path_corners ως triggers. Αν ο παίχτηςήρωας "κολλήσει" στις πόρτες όλη η επόμενη σειρά ενεργειών θα εκκινήσει, δημιουργώντας μία ανεπιθύμητη κι ακατάστατη εναλλαγή ενεργειών. Δημιουργία ανελκυστήρα- Δαμιανάκης Α. - Λιβανός Γ. Σελίδα 8