• Projektinhalt
  • Game Engines
  • Glossar
  • Tutorial
    1. Erste Schritte
    2. Treiber initialisieren
    3. Skybox & Skydome
    4. GUI Text
    5. Terrain
    6. Nebel
    7. Objekte einfügen
    8. Kamera
    9. Beleuchtung
    10. Kollisionsdetektion
    11. Hintergrundmusik
    12. Szene darstellen
    13. Gras
    14. Bäume

  • Download
  • Links

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

Katarina Boland