プログラミング学校の教材。パート14
以前のチュートリアルはここにあります:
今日、私たちはリラックスして楽しい気分になっています!したがって、このチュートリアルは単純で「短い」ものになります。グラフィックは使用しません(ただし、プロジェクトを改善する権利を制限する人は誰もいません)。管理に注意を払い、ホバークラフトの作成などの物理を使用します。
, - ,
Rigidbody :
, ̆ Convex, Rigidbody . ̈ ConstantForce , .
ご覧のとおり、スクリーンショットはすでにスクリプトでオーバーレイされています。ただし、先に進む前に、ステアリングベーンを取り付ける必要があります。
また、Gizmoという名前の空のゲームオブジェクトがモデルのステアリングブレードの取り付けポイントに取り付けられ、ブレード自体がその中に配置されます。
スクリプトは、最後の前のスクリーンショットに従って構成されています。スクリプトの完全なリストは次のようになります。
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;
}
}
この場合、最初に物理エンジン、次にサウンドエンジンの順に、スクリプトを指定することをお勧めします。
完了しました。