ベクトルの加算
CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 24/85。
Vector3は変数に格納でき、2つのベクトルは+で足し合わせられます。xはxに、yはyに、zはzに加算されます。これにより、2つの力が合わさって1つの移動になります。このビーチボールは毎秒2単位前方に転がり、風によって毎秒1単位右に押されます。
Vector3 roll = new Vector3(0, 0, 2);
Vector3 wind = new Vector3(1, 0, 0);
void Update()
{
Vector3 move = roll + wind; // (1, 0, 2)
transform.position += move * Time.deltaTime;
}ベクトルに数値を掛けると、その各成分に数値が掛けられます。wind * 3は(3, 0, 0)となり、嵐のような力になります。また、move * Time.deltaTimeによって、毎秒の移動量がこのフレームでの移動量に変換されます。引き算も成分ごとに行われ、a - bは点bから点aへ向かうステップです。2つのベクトルの間に*を置くことはできません。roll * windはコンパイルできません。
チャレンジ
簡単川がボートを運び、上矢印キーを押すとモーターの力が加わります。
Update()で、まずVector3 move = current;を記述します。Input.GetKey(KeyCode.UpArrow)がtrueの間、+=を使ってmotorをmoveに加えます。move * Time.deltaTimeをtransform.positionに加えます。
「プレイ」を押すと、ボートは右へ流れ、上矢印キーを押している間、川を横切ります。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
public class Boat : MonoBehaviour
{
public Vector3 current = new Vector3(0, 0, 0);
public Vector3 motor = new Vector3(0, 0, 0);
void Update()
{
// currentは常にボートを流します。
// 上矢印キーを押している間は、motorもボートを押します。
}
}
Unityスクリプトの基礎のすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド