2010-12-07 GameMaker AG-Protokoll: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
K (Bot: Kosmetische Änderungen) |
||
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 18: | Zeile 18: | ||
* Wir entscheiden uns, die Steuerung und Kamera so abzuändern, dass die Kamera durch die horizontale Input-Achse gedreht sird, und man relativ zur Kamera nur nach vorne bzw. hinten rollen kann. | * Wir entscheiden uns, die Steuerung und Kamera so abzuändern, dass die Kamera durch die horizontale Input-Achse gedreht sird, und man relativ zur Kamera nur nach vorne bzw. hinten rollen kann. | ||
** Hierfür entfernen wir den die FollowCam-Komponente von der Kamera, | ** Hierfür entfernen wir den die FollowCam-Komponente von der Kamera, | ||
** erzeugen eine neues, leeres GameObject, dass wir an den Mittelpunkt des Balles positionieren, namens | ** erzeugen eine neues, leeres GameObject, dass wir an den Mittelpunkt des Balles positionieren, namens '''CameraPivot'''. Dieser kriegt nun eine FollowCamera-Komponete, die mit Offset 0,0,0 und der Kugel als Target dafür sorgt, dass er im Kugelmittelpunkt bleibt. | ||
** Die Kamera wird nun dem CameraPivot untergeordnet (Parent-System) und so positioniert und rotiert, wie sie relativ zum Ball sein soll (das läuft ja nicht mehr über die Offset-Eigenschaft!). | ** Die Kamera wird nun dem CameraPivot untergeordnet (Parent-System) und so positioniert und rotiert, wie sie relativ zum Ball sein soll (das läuft ja nicht mehr über die Offset-Eigenschaft!). | ||
** Jetzt ändern wir das PlayerMovement-Script: | ** Jetzt ändern wir das PlayerMovement-Script: | ||
Zeile 29: | Zeile 29: | ||
} | } | ||
</pre> | </pre> | ||
* Der Eigenschaft "Pivot" im Inspektor wird nun unser CameraPivot zugewiesen. | |||
** '''pivot.forward''' ist der Vektor, der abhängig von der Drehung des Transforms vom Objekt aus gesehen nach vorne zeigt und ist somit identisch mit pivot.TransformDirection(Vector3.forward). | ** '''pivot.forward''' ist der Vektor, der abhängig von der Drehung des Transforms vom Objekt aus gesehen nach vorne zeigt und ist somit identisch mit pivot.TransformDirection(Vector3.forward). | ||
** Wir können jetzt nur noch nach vorne und hinten rollen. | ** Wir können jetzt nur noch nach vorne und hinten rollen. | ||
Zeile 50: | Zeile 50: | ||
== Ansonsten == | == Ansonsten == | ||
* Bitte alle in die | * Bitte alle in die [https://mailhost.informatik.uni-hamburg.de/mailman/listinfo/ag-gamemaker Mailingliste] eintragen! | ||
[[Kategorie: GameMaker AG-Protokolle]] | [[Kategorie:GameMaker AG-Protokolle]] |
Aktuelle Version vom 8. Juni 2012, 17:01 Uhr
Protokoll der GameMaker AG-Sitzung am 07.12.2010
Anwesende Personen: 10
Beginn: 13:05 Uhr
Ablauf[Bearbeiten]
- Wir wiederholen noch einmal die Scripts PlayerMovement und FollowCamera
- PlayerMovement wird gändert, sodass Time.deltaTime darin vorkommt:
var speed : float; function FixedUpdate() { rigidbody.AddForce(Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical")) * Time.deltaTime * speed); }
- Grund dafür ist die Möglichkeit, dass die Framerate auch in FixedUpdate() sinken kann, wenn sich die Physik-Engine irgendwann überfordert fühlt
- Wir entscheiden uns, die Steuerung und Kamera so abzuändern, dass die Kamera durch die horizontale Input-Achse gedreht sird, und man relativ zur Kamera nur nach vorne bzw. hinten rollen kann.
- Hierfür entfernen wir den die FollowCam-Komponente von der Kamera,
- erzeugen eine neues, leeres GameObject, dass wir an den Mittelpunkt des Balles positionieren, namens CameraPivot. Dieser kriegt nun eine FollowCamera-Komponete, die mit Offset 0,0,0 und der Kugel als Target dafür sorgt, dass er im Kugelmittelpunkt bleibt.
- Die Kamera wird nun dem CameraPivot untergeordnet (Parent-System) und so positioniert und rotiert, wie sie relativ zum Ball sein soll (das läuft ja nicht mehr über die Offset-Eigenschaft!).
- Jetzt ändern wir das PlayerMovement-Script:
var speed : float; var pivot : Transform; function FixedUpdate() { rigidbody.AddForce(pivot.forward * Input.GetAxis("Vertical")) * Time.deltaTime * speed); }
- Der Eigenschaft "Pivot" im Inspektor wird nun unser CameraPivot zugewiesen.
- pivot.forward ist der Vektor, der abhängig von der Drehung des Transforms vom Objekt aus gesehen nach vorne zeigt und ist somit identisch mit pivot.TransformDirection(Vector3.forward).
- Wir können jetzt nur noch nach vorne und hinten rollen.
- Um die Kamera zu drehen, erstellen wir ein neues Script namens RotateByInput, das wir dem CameraPivot geben:
var speed : float; //Kamera-Drehgeschwindigkeit function Update() //Update, da keine Kamera in Abhängigkeit eines targets ist (LateUpdate()) und kein Physikobjekt im Spiel ist (FixedUpdate()) { transform.Rotate(0, Input.GetAxis("Horizontal") * Time.deltaTime * speed, 0); //Drehe dein GameObject (und damit die Kamera)! }
- Damit haben wir das gesamte Gameplay umgekrempelt :)
Ergebnis[Bearbeiten]
- Alle sind scriptingtechnisch ungefähr auf dem gleichen Stand.
- Nach Möglichkeit kann Zuhause an der Scene gebastelt und somit eine Herausforderung erstellt werden.
Nächstes Mal[Bearbeiten]
- Wir können nun das Spiel nach belieben erwitern: Springen, bewegende Objekte, Spezialeffekte, Sounds, ...
- Ausserdem schauen wir uns Prefabs an - eine extrem wichtige Sache!
Ansonsten[Bearbeiten]
- Bitte alle in die Mailingliste eintragen!