Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

11

22.06.2016, 10:19

Unity hat ein LookAt Skript. Das kannst du der Kamera geben. Als Target gibst du den Spieler an. Jetzt guckt die Kamera immer auf den Spieler. Anstatt jetzt zu rotieren kannst du die Kamera nach oben und unten verschieben. Das ist nicht das selbe wie eine Rotation, ist aber glaube ich das verhalten was du erreichen möchtest.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

12

22.06.2016, 10:39

Allerdings ändert sich auf diese Weise der Abstand zum Spieler, was eher weniger gewünscht sein dürfte.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

13

22.06.2016, 11:49

Allerdings ändert sich auf diese Weise der Abstand zum Spieler, was eher weniger gewünscht sein dürfte.

Jap, deshalb hab ich geschrieben dass es nicht das selbe ist. Ausprobieren kann er es ja einfach mal. Dauert ja keine Minute das zu testen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

14

22.06.2016, 12:36

Hi,
Danke für die Antworten. Ich bin vorhin leider erst einmal nur dazu gekommen Cobolds und Renegades Vorschläge umzusetzen. Cobolds Vorschlag ist mit einem Einzeiler umgesetzt, funktioniert auch genau so wie ichs haben will, hat aber das Problem das dann die Figur logischerweise umgedreht wird und das darf ja nicht passieren.

Zu Renegades Vorschlag habe ich eine Frage, momentan steuer ich die Kamera noch mit diesem Skript

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Kamera des Spielers
    public Transform kamera;

    // maximale Kameradrehung vertikal
    public float maxKameradrehungVertikal = 30.0f;

    // minimale Kameradrehung vertikal
    public float minKameradrehungVertikal = -30.0f;

    // aktuelle Kameradrehung vertikal
    private float aktuelleKameraDrehungVertikal = 0;

 // Kamera vertikal rotieren
        aktuelleKameraDrehungVertikal = Mathf.Clamp(aktuelleKameraDrehungVertikal + rotationsVektor.y * rotationsGeschwindigkeitVertikal, minKameradrehungVertikal, maxKameradrehungVertikal);
        kamera.localRotation = Quaternion.identity;
        kamera.Rotate(Vector3.left, aktuelleKameraDrehungVertikal);


Die Doku zu Slerp habe ich mir angeschaut, welchen höchsten und tiefsten Punkt nehmen ich? Momentan habe ich ja nur einen Winkel wie weit sich die Kamera neigen darf, nicht aber einen festen Punkt unter und über der Figur.

Kann mir das noch jemand verraten?


Du solltest Sacaldurs Weg wählen, wenn du den mathematischen Weg mit Slerp nicht gehen möchtest (Ich gehe mal davon aus, dass dir die Interpolation mit Slerp schwierig fallen wird). Dadurch musst du nur das Parent-GameObject welches der Fokuspunkt für die Kamera ist drehen, wodurch sich die Kamera automatisch mit dreht. Möchtest du trotzdem den mathematischen Weg gehen, musst du dir mal das Thema rund um den Einheitskreis anschauen.

Ansonsten ist der schnellste Weg der von Schorsch, da Unity bereits ein Asset Paket für dein Problem anbietet, welches du in Unity unter Assets->Import Package findest.
Liebe Grüße,
René

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

15

22.06.2016, 12:47

Es gab meine ich auch irgendein Skript mit welchem man die Distanz zwischen zwei Objekten steuern konnte. Follow war das glaube ich. Mit einer Kombination aus Follow und LookAt müsste ja im Prinzip das möglich sein was du haben möchtest. Vor allem kannst du die Kamerabewegungen mit den Skripts recht einfach smoothen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

16

22.06.2016, 15:42

Abstand festlegen: cameraPosition = playerPosition + (cameraPosition - playerPosition).normalized * distance


@Renegade:
Slerp dient der Interpolation. Bevor man etwas interpolieren kann, braucht man Start- und Endwert
Der "mathematische Weg" wäre das, was ich vorgeschlagen habe, nur ohne zusätzliches GameObject. Man würde also die Berechnungen, die bereits über die Transforms durchgeführt werden, erneut implementieren.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

17

22.06.2016, 19:40


@Renegade:
Slerp dient der Interpolation. Bevor man etwas interpolieren kann, braucht man Start- und Endwert


Richtig. Letzteres kann man berechnen :wacko:
Liebe Grüße,
René

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

18

22.06.2016, 19:49

Also ich werde mich dann jetzt mal Sacaldurs Vorschlag widmen, grübel aber momentan über die gesamte Steuerung, da der Charakter ja über den linken Joystick nach vorne läuft etc. und über den rechten Joystick gedreht wird.

Aber das ist doch schon falsch oder irre ich mich?

Normalerweise erfolgt doch eine kleine Ausrichtung schon über den linken Joystick während des Laufens...

Nein ?(

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

19

23.06.2016, 09:12

Aber das ist doch schon falsch oder irre ich mich?
Kommt darauf an, wie man es implementiert. Für den Anfang wäre es wohl gut genug, wenn du die Rotation so hinbekommst, dass der Spieler im Fokus bleibt. Danach kannst du dir über Verbesserungen Gedanken machen. ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

20

24.06.2016, 21:29

So, also Sacaldurs Vorschlag klappt erstmal gut, damit werde ich dann erst einmal weitermachen.

Was ich noch fragen wollte, manchmal kommt es zu einem Bug, während der Laufzeit, das einfach mal die Steuerung des Controllers nicht mehr richtig erkannt wird oder die Kamera die Achsen vertauscht, beim Neustart ist es dann wieder richtig ?(

Werbeanzeige