ベクトルの加算
CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 17/67。
Vector3は変数に格納でき、2つのVector3は+で足し合わせられます。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はコンパイルできません。
チャレンジ
簡単川のcurrentは常にボートを流します。上矢印キーを押している間は、川の流れに加えてボートのmotorも推進力になります。どちらもインスペクターで設定する毎秒あたりの移動量で、川の流れは(1, 0, 0)、モーターは(0, 0, 3)です。
Playを押し、上矢印キーで川を渡してから、Checkを押してください。
自分で試してみよう
using UnityEngine;
public class Boat : MonoBehaviour
{
public Vector3 current = new Vector3(0, 0, 0);
public Vector3 motor = new Vector3(0, 0, 0);
void Update()
{
// 水流は常にボートを運びます。
// 上矢印キーを押している間は、モーターもボートを押します。
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。