x9/Scripte/Input ed
Bisher unterstützt die Engine nur Maus und Tastatur, also noch keinen Joystick.
Jede Eingabe muss über Script-Funktionen abgefragt werden (im Gegensatz zu Callback-Systemen). Die Funktionen geben jeweils die Eingaben während des letzten Frames an.
Table of Contents
Tastatur ed
Die Abfrage-Funktionen für die Tastatur sind:
- GetKey(int key): ist die Taste gerade gedrückt?
- GetKeyDown(int key): wurde die Taste im letzten Frame herunter gedrückt?
- GetKeyDownRep(int key): wurde die Taste im letzten Frame herunter gedrückt? (schlägt aber auch solange die Taste gedrückt bleibt regelmäßg wieder an)
- GetKeyUp(int key): wurde die Taste im letzten Frame losgelassen?
Die Tasten werden dabei durch Konstanten repräsentiert (z.B. KeyA für die A-Taste, KeySpace für die Leertaste).
Beispiel:
void main()
while true
// Ego durch Pfeiltasten bewegen
if GetKey(KeyLeft)
Ego.pos.x -= 100.0 * Elapsed
if GetKey(KeyRight)
Ego.pos.x += 100.0 * Elapsed
if GetKey(KeyUp)
Ego.pos.y -= 100.0 * Elapsed
if GetKey(KeyDown)
Ego.pos.y += 100.0 * Elapsed
if GetKeyDown(KeySpace)
shoot()
wait_of()Vorsicht
while true
if GetKeyDown(KeyAny)
breakwird nie abbrechen, da ein Tastendruck erst im nächsten Frame von GetKeyDown() erkannt wird. Dazu ist ein wait_of() in der Schleife nötig um überhaupt den Frame abzuschließen und einen neuen zu beginnen.
Maus ed
Die Abfrage-Funktionen für die Tastatur sind:
- GetButton(int button): ist die linke/mittlere/rechte Maustaste gerade gedrückt?
- GetButtonDown(int button): wurde die linke/mittlere/rechte Maustaste im letzten Frame herunter gedrückt?
- GetButtonUp(int button): wurde die linke/mittlere/rechte Maustaste im letzten Frame losgelassen?
Die Maus-Position und Bewegung ist in folgenden Variablen gespeichert:
- Mouse und MouseRel: die aktuelle Position
- MouseD und MouseDRel: der Weg, den sich die Maus im letzten Frame bewegt hat (die z-Komponente gibt die Bewegung des Mausrades an)
Beispiel:
void main()
// einen Mauszeiger erstellen
picture cursor = CreatePicture( v0, 0.1, 0.1, LoadTexture("cursor.jpg"), r01, White )
while true
// Mauszeiger bewegen
cursor.pos = MouseRel
wait_of()noch ein Beispiel:
void main()
Ego.ang = v0
while true
// Dragball-Rotation
if GetButton(0)
vector d_ang = vector(MouseD.y * 0.003, MouseD.x * 0.003, 0)
Ego.ang = VecAngAdd(d_ang, Ego.ang)
wait_of()