Kamera
In Irrlicht gibt es verschiedene vordefinierte Kameraarten. Zuerst wird aber vorgestellt,
wie man die Kamerasteuerung, d.h. die Tastaturbelegung, anpassen kann.
Dies funktioniert mit Hilfe einer Keymap. Diese kann dann später an die
Kamera übergeben werden. In diesem Fall kann die Bewegung nun sowohl mit den
Pfeiltasten, als auch mit w,a,s,d gesteuert werden.
SKeyMap keyMap[8];
- keyMap[0].Action = EKA_MOVE_FORWARD;
- keyMap[0].KeyCode = KEY_UP;
- keyMap[1].Action = EKA_MOVE_FORWARD;
- keyMap[1].KeyCode = KEY_KEY_W;
- keyMap[2].Action = EKA_MOVE_BACKWARD;
- keyMap[2].KeyCode = KEY_DOWN;
- keyMap[3].Action = EKA_MOVE_BACKWARD;
- keyMap[3].KeyCode = KEY_KEY_S;
- keyMap[4].Action = EKA_STRAFE_LEFT;
- keyMap[4].KeyCode = KEY_LEFT;
- keyMap[5].Action = EKA_STRAFE_LEFT;
- keyMap[5].KeyCode = KEY_KEY_A;
- keyMap[6].Action = EKA_STRAFE_RIGHT;
- keyMap[6].KeyCode = KEY_RIGHT;
- keyMap[7].Action = EKA_STRAFE_RIGHT;
- keyMap[7].KeyCode = KEY_KEY_D;
Fehlt nur noch die eigentliche Kamera... Sie soll sich so verhalten, wie man es aus
First-Person-Shooter (FPS) Spielen kennt, also fällt die Wahl auf Irrlichts FPS-Kamera.
Erster Parameter ist parent. Mit ihm kann man leicht erreichen, dass sich die Kamera mit einem Mesh mitbewegt, was hier aber nicht nötig ist.
Der nächste Parameter rotateSpeed gibt an, wie schnell die Kamera mit der Maus
gedreht werden kann.
moveSpeed ist der folgende Parameter. Er gibt die Laufgeschwindigkeit an.
Der 4. Parameter ist die altbekannte Id.
Anschließend kann der Kamera die selbstdefinierte Keymap übergeben werden.
Deren Größe stellt der 6. Parameter dar.
Als 7. Parameter folgt das noVerticalMovement-Flag, dass standardmäßig auf
false steht. So kann man in der Welt umherfliegen, in dem Ausmaß, wie es die
Schwerkraft zulässt. (wie man die Schwerkraft festlegt, wird in Teil X behandelt)
Schließlich kann mit dem Parameter jumpSpeed die Sprunggeschwindigkeit festgelegt
werden.
//add camera
ICameraSceneNode* camera = irrSceneMgr->addCameraSceneNodeFPS(
- 0,100.0f,300.0f, -1, keyMap, 8, true, 1);
setPosition legt den Standort der Kamera fest, setTarget ihre
Blickrichtung.
Mit der Methode setFarValue kann die Weite des Sichtbereichs bestimmt werden.
Der Standardwert ist 2000.0f, hier wird er höher gesetzt um zu verhindern, dass der
Tempel aus dem Sichtfeld verschwindet. Schließlich ist er das einzige Objekt, das in der
Szene zu sehen ist.
camera->setPosition(terrainCenter + vector3df(900,45,1800));
camera->setTarget(terrainCenter + vector3df(0,100,1500));
camera->setFarValue(25000.0f);
Als letztes soll jetzt noch der Cursor unsichtbar gemacht werden.
//disable cursor
irrDevice->getCursorControl()->setVisible(false);
zurück
weiter