Material didático para a escola de programação. Parte 14
Tutoriais anteriores podem ser encontrados aqui:
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!