Hovercraft no Unity 3D

Material didático para a escola de programação. Parte 14

Tutoriais anteriores podem ser encontrados aqui:
  1. Nave espacial





  2. Dominó





  3. Pássaro abano





  4. Sala de gravidade





  5. Platformer





  6. Árvores (plugin SpeedTree)





  7. Modelando uma casa no SketchUp





  8. Casa na floresta





  9. Efeito de chuva. Partículas





  10. Bilhar





  11. Caráter líquido





  12. Aderindo e trabalhando com o Sistema de Eventos





  13. Sintetizador Unity 3D





Hoje estamos com vontade de relaxar e nos divertir! Portanto, este tutorial será simples e "curto". Não vamos trabalhar com gráficos (mas ninguém te limita no direito de melhorar o projeto), vamos dar atenção à gestão e trabalhar com a física, por exemplo, criando um hovercraft.





̆ , ̆ . , .





, - ,





Rigidbody :





, ̆ Convex, Rigidbody . ̈ ConstantForce , .





Como você pode ver, a captura de tela já foi sobreposta por um script. Mas antes de prosseguir, é necessário instalar as palhetas de direção.

Além disso, objetos de jogo vazios com o nome Gizmo são instalados no modelo nos pontos de instalação das lâminas de direção, e as próprias lâminas são colocadas neles.





O script é configurado de acordo com a imagem anterior. A lista completa do script é semelhante a esta:





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

      
      



Nesse caso, é melhor fornecer o script sequencialmente, primeiro o mecanismo de física e, em seguida, o mecanismo de som.





Feito!








All Articles