Menu
CoddyTech

ベクトルの加算

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はコンパイルできません。

challenge icon

チャレンジ

簡単

川がボートを運び、上矢印キーを押すとモーターの力が加わります。

  1. Update()で、まずVector3 move = current;を記述します。
  2. Input.GetKey(KeyCode.UpArrow)がtrueの間、+=を使ってmotorをmoveに加えます。
  3. 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プレイグラウンド