Luftkissenfahrzeug in Unity 3D

Unterrichtsmaterialien für die Programmierschule. Teil 14

Frühere Tutorials finden Sie hier:
  1. Raumschiff





  2. Domino





  3. Flattervogel





  4. Schwerkraftraum





  5. Plattform





  6. Bäume (Plugin SpeedTree)





  7. Modellieren eines Hauses in SketchUp





  8. Haus im Wald





  9. Regeneffekt. Partikel





  10. Billard





  11. Flüssiger Charakter





  12. Festhalten und Arbeiten mit dem Ereignissystem





  13. Unity 3D-Synthesizer





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!








All Articles