Hey,
ich versuche mich gerade bei der Kamerasteuerung. Vielleicht kann mir jemand von euch helfen.
Ich hätte gerne eine Art Kamere, wie man sie aus Black & White kennt. Ein "Cursor" bewegt sich auf dem Boden, oder einer Ebene, entlang und per Mausklick, kann man die Kamera nach ziehen bzw. bewegen.
Dieses "Nachziehen" funktioniert soweit.
Ich benutze dazu zwei Dummys. Der Eine ist mein CursorDummy (die Hand aus B&W) auf einer Ebene und der andere Dummy ist der CameraDummy, auf dem die ganze Zeit die Kamera ausgerichtet wird.
Halte ich jetzt die Maustaste gedrückt, so bleibt die Position des CursorDummys unverändert aber die Position des CameraDummys wird nun mittels Mausbewegung verändert und es hat den Anschein, als ob man die Kamera ziehen/schieben kann.
Nun, jetzt kommt die Sache wo ich merkte, dass dieser Weg nicht der richtige ist.
Denn, ich möchte die Kamera auch rotieren lassen. Und zwar soll die Rotation um den CursorDummy geschehen. Das Rotationszentrum, soll sich also immer bei der CursorDummy-Position befinden, nicht bei der CameraDummy-Position.
Als Grundlage benutze ich das Kamera Tutorial von den AU Resources:
Hier der Link:
TutorialKleiner Ausschnitt:
Code:
...
var_CameraDistance = cos(var_CameraTilt) * var_CameraTotalDistance;
camera.x = ent_CameraDummy.x - cos(var_CameraPan) * var_CameraDistance;
camera.y = ent_CameraDummy.y - sin(var_CameraPan) * var_CameraDistance;
camera.z = ent_CameraDummy.z + sin(var_CameraTilt) * var_CameraTotalDistance;
camera.pan = var_CameraPan;
camera.tilt = -var_CameraTilt;
camera.roll = 0;
...
Als Beispiel für die Art Kamera, die so ähnlich wie die aus B&W ist, hab ich noch ein kleines Video von "The Room" mit verlinkt:
The RoomMeine Idee war folgende:
Ich berechne die entstehende Distanz vom CursorDummy zum CameraDummy und rechne die auf die Kamera Position drauf. Somit könnte ich die Kamera die ganze Zeit auf den CursorDummy ausrichten lassen, anstatt auf den CameraDummy.
Wenn ich jetzt die Maustaste gedrückt lasse und sie bewege, rechne ich die Distanz wieder runter.
Könnte das so funktionieren?
Oder muss ich da völlig anders ran gehen?