Ich denke er meinte sicherlich eine einfache Rotation. Diese kann durch eine einfache Erstellung einer Worldmatrix erreicht werden. Alles dazu steht auf jeden fall in David's Buch.
Falls du doch meintest das der Würfel nach eine Rotation auf einer seiner Flächen zum stillstand kommen sollte, ist das schon etwas Komplizierter. So eine Diskusion hatte ich in einem Forum schon einmal. Da wollte auch jemand etwas Pysikalisches nachbilden und alle nannten ihm irgendwelche Formeln. Jedoch ist die exakte Nachbildung der echten Physik in einem Game, viel zu kompliziert und zu rechenaufwändig.
Ob der Würfel auf dem Boden liegt, kann man auf zwei Arten schnell Testen.
1) Wenn der Boden imm in der Wage liegt und sein Normalenvektor 0,1,0 ist, dann sollte der Würfel immer Glatt auf dem Boden liegen, wenn der Winkel der Z oder X Achse durch 90° teilbar ist oder NULL ist.
2) Wenn der Boden nicht wie in "1" Definiert ist, müssen die 4 Ecken einer Seite direkt auf dem Boden aufliegen.
So nun zum Rollen selber. Damit der Würfel rollt ist es nötig, das er genug Kraftüberschuss hat, damit er über eine seiner Kanten rollen kann. Beim Anschupsen führt man dem Würfel eine Kraft zu (ns). Der Würfel brauch eine gewisse Restkraft um die nächste Rollbewegung auszuführen (nr).
Rechnung:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
|
if(ns >= nr)
{
ns -= nr;
// Rollen
}
else
{
// Dies war das letzte rollmanöver weil Kraft verbraucht.
}
|
So wäre jetzt einfach mal mein erster Ansatz. Dieser hat keine Garantie auf Gültigkeit. Für Nebenwirkungen und Beschädigungen komme ich nicht auf ;D