2010-12-07 GameMaker AG-Protokoll
Zur Navigation springen
Zur Suche springen
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!