Hovercraft dalam Unity 3D

Bahan ajar untuk sekolah pemrograman. Bagian 14

Tutorial sebelumnya dapat ditemukan di sini:
  1. Pesawat luar angkasa





  2. Domino





  3. Burung Flappy





  4. Ruang gravitasi





  5. Platformer





  6. Pohon (plugin SpeedTree)





  7. Memodelkan rumah di SketchUp





  8. Rumah di hutan





  9. Efek hujan. Partikel





  10. Bilyar





  11. Karakter cair





  12. Menempel dan bekerja dengan Sistem Acara





  13. Penyintesis 3D Unity





Hari ini kita sedang mood untuk relaksasi dan bersenang-senang! Oleh karena itu, tutorial ini akan sederhana dan "singkat". Kami tidak akan bekerja dengan grafik (tetapi tidak ada yang membatasi Anda dalam hak untuk meningkatkan proyek), kami akan memperhatikan manajemen dan bekerja dengan fisika, misalnya, membuat hovercraft.





̆ , ̆ . , .





, - ,





Rigidbody :





, ̆ Convex, Rigidbody . ̈ ConstantForce , .





Seperti yang Anda lihat, tangkapan layar telah dilapisi dengan skrip. Tetapi sebelum melanjutkan, Anda perlu memasang baling-baling kemudi.

Selain itu, objek permainan kosong dengan nama Gizmo dipasang pada model di titik pemasangan bilah kemudi, dan bilah itu sendiri diletakkan di dalamnya.





Skrip dikonfigurasi sesuai dengan tangkapan layar sebelum yang terakhir. Daftar lengkap skrip terlihat seperti ini:





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;
    }
}

      
      



Dalam hal ini, lebih baik memberikan skrip secara berurutan, pertama mesin fisika, kemudian mesin suara.





Selesai!








All Articles