Aktuelle Zeit: 13.05.2025, 08:11

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 17.01.2008, 23:12 
Offline

Registriert: 15.10.2007, 20:08
Beiträge: 31
Also ich kann mein Node in alle beliebigen Richtungen bewegen indem ich einfach in jedem Frame die Position ein stück ändere.
Aber jetzt möchte ich Rotation ins Spiel bringen und das Node immer nach "Vorne" Bewegen egal in welche Richtung es "Schaut".

Ich möchte damit eine Rotierbare Dritte-Person Camera machen indem ich die Mausposition erfasse und Die Camera an ihrer eigenen Achse um die Diffrerenz mit der Letzten Mausposition bewege und Dabei das Target wieder auf das Node setze. Somit wird sie Ständig auf das Ziel ausgerichtet und wenn sie sich Seitwärts bewegt bildet sie einen perfekten Kreis.

Das ist wahrscheinlich nicht der beste Weg eine solche Kamera zu machen aber mir fällt nichts anderes ein um die Kamera im Kreis um ihr Ziel zu bewegen.


Nach oben
 Profil  
 
BeitragVerfasst: 18.01.2008, 20:20 
Offline
Moderator

Registriert: 25.02.2007, 14:35
Beiträge: 323
Wohnort: Münster
Also um ein Node in die Richtung zu bewegen, in die es "schaut", gibt es mehrere Möglichkeiten.
Entweder du arbeitest mit Sinus und Cosinus (ich weiß nicht, wie weit du damit vertraut bist).
Eine schönere Möglichkeit ist aber die Arbeit mit einer Matrix:

Arras (aus dem englischen Forum) hat mal ne Funktion dafür geschrieben:
Code:
void move(irr::scene::ISceneNode *node, //node to move
            irr::core::vector3df vel) //velocity vector
            // for example to move node 10 units forward use vector3df(0,0,10)
{
    irr::core::matrix4 m;
    m.setRotationDegrees(node->getRotation());
    m.transformVect(vel);
    node->setPosition(node->getPosition() + vel);
    node->updateAbsolutePosition();
}


wie du diese Funktion benutzt, steht ja schon dran.

Du übergibst der Funktion einfach dein zu bewegendes SceneNode sowie einen Vektor, der angibt, um wie viel sich das SceneNode bewegen soll.
Wenn du also ein SceneNode um 100 Einheiten in die Richtung bewegen willst, in die es "schaut", dann musst du einfach folgendes schreiben:
Code:
void move(node, irr::core::vector3df(0.0f, 0.0f, 100.0f);



Gruß
marsupial


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de