Bahan ajar untuk sekolah pemrograman. Bagian 14
Tutorial sebelumnya dapat ditemukan di sini:
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!