Materiales didácticos para la escuela de programación. Parte 14
Los tutoriales anteriores se pueden encontrar aquí:
¡Hoy estamos de humor para relajarnos y divertirnos! Por tanto, este tutorial será sencillo y "breve". No trabajaremos con gráficos (pero nadie te limita en el derecho a mejorar el proyecto), prestaremos atención a la gestión y trabajaremos con la física, por ejemplo, creando un aerodeslizador.
, - ,
Rigidbody :
, ̆ Convex, Rigidbody . ̈ ConstantForce , .
Como puede ver, la captura de pantalla ya se superpuso con un script. Pero antes de continuar, es necesario instalar las paletas de dirección.
Además, los objetos de juego vacíos con el nombre Gizmo se instalan en el modelo en los puntos de instalación de las palas de dirección, y las palas se colocan en ellos.
El script se configura de acuerdo con la captura de pantalla anterior a la última. La lista completa del script se ve así:
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;
}
}
En este caso, es mejor dar el guión secuencialmente, primero el motor de física, luego el motor de sonido.
¡Hecho!