Unterrichtsmaterialien für die Programmierschule. Teil 14
Frühere Tutorials finden Sie hier:
Heute sind wir in der Stimmung für Entspannung und Spaß! Daher wird dieses Tutorial einfach und "kurz" sein. Wir werden nicht mit Grafiken arbeiten (aber niemand schränkt Sie im Recht ein, das Projekt zu verbessern), wir werden auf das Management achten und mit der Physik arbeiten, zum Beispiel um ein Luftkissenfahrzeug zu erstellen.
, - ,
Rigidbody :
, ̆ Convex, Rigidbody . ̈ ConstantForce , .
Wie Sie sehen, wurde der Screenshot bereits mit einem Skript überlagert. Bevor Sie fortfahren, müssen Sie jedoch die Lenkschaufeln einbauen.
Außerdem werden an den Installationspunkten der Lenkblätter leere Spielobjekte mit dem Namen Gizmo auf dem Modell installiert und die Klingen selbst darin eingelegt.
Das Skript wird gemäß dem vorletzten Screenshot konfiguriert. Die vollständige Liste des Skripts sieht folgendermaßen aus:
using UnityEngine;
using System.Collections;
public class Howercraft: MonoBehaviour {
public Rigidbody HowercraftRigidbody; //
public Transform CenterOfMass; //
public float power = 25000; // /
public float torque = 25000; // /
float finAngle; //
float pitch; //
public Transform[] Fins; //
public AudioSource mainEngine; //
public AudioSource pushEngine; //
// Use this for initialization
void Start() {
HowercraftRigidbody.centerOfMass = CenterOfMass.position - HowercraftRigidbody.position; //
}
// Update is called once per frame
void Update() {
float inpFB = Input.GetAxis("Vertical"); // /
float inpLR = Input.GetAxis("Horizontal"); // /
Vector3 vely = new Vector3(HowercraftRigidbody.transform.forward.x, 0, HowercraftRigidbody.transform.for ward.z); //
float gain = Mathf.Clamp01(HowercraftRigidbody.transform.up.y); // ,
HowercraftRigidbody.AddForce(vely * power * inpFB * gain, ForceMode.Force); //
HowercraftRigidbody.AddRelativeTorque(0, torque * inpLR * inpFB * gain, 0, ForceMode.Force); //
finAngle = Mathf.Lerp(finAngle, -45 * inpLR, Time.deltaTime / 0.2f); //
foreach(Transform Fin in Fins) {
Fin.localEulerAngles = new Vector3(0, finAngle, 0); //
}
mainEngine.pitch = 0.9f + HowercraftRigidbody.velocity.magnitude / 60f; //
pitch = Mathf.Lerp(pitch, Mathf.Abs(inpFB) * 1.3f, Time.deltaTime / 0.5f); //
pushEngine.pitch = 1f + 2f * pitch;
pushEngine.volume = 0.3f + pitch / 3f;
}
}
In diesem Fall ist es besser, das Skript nacheinander anzugeben, zuerst die Physik-Engine, dann die Sound-Engine.
Getan!