今回は、Unityの基本操作であるゲームオブジェクトの移動/回転/削除/生成について説明します。
3Dゲームオブジェクトを前方に動かす
3Dゲームオブジェクトを前方に動かすスクリプトは下記のように書きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sample : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.position += Vector3.forward;
}
}
“transform.position”はスクリプトがアタッチされているGameObjectの位置を操作するための変数。
“Vector3.forward”はワールド空間の前方を表しておりVector3(0,0,1)となる。
“transform.position”に”Vector3.forward”を加算することにより、GameObjectが前方に進むようになる。
3Dゲームオブジェクトを回転させる
3Dゲームオブジェクトを回転するスクリプトは下記のように書きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sample2 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.rotation *= Quaternion.Euler(1.0f, 0.0f, 0.0f);
}
}
“transform.rotation”はゲームオブジェクトの向きを表します。
“Quaternion.Euler(1.0f, 0.0f, 0.0f)”は、x軸周りの回転を表します。
transform.rotationとQuaternion.Euler(1.0f, 0.0f, 0.0f)を掛け合わせて指定した回転角を合成してオブジェクトを回転させます。
3Dゲームオブジェクトを拡大させる
3Dゲームオブジェクトを拡大させるスクリプトは下記のように書きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sample3 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.localScale += Vector3.one;
}
}
“transform.localScale”はTransformオブジェクトから見た相対的なスケールを表します。
Vector3.oneはVector3(1,1,1)と同じである。
Vector3.zero: Vector3(0,0,0)
Vector3.up: Vector3(0,1,0)
Vector3.down: Vector3(0,-1,0)
Vector3.right: Vector3(1,0,0)
Vector3.left: Vector3(-1,0,0)
Vector3.forward: Vector3(0,0,1)
Vector3.back: Vector3(0,0,-1)
3Dゲームオブジェクトを削除する
3Dゲームオブジェクトを削除するスクリプトは下記のように書きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sample4 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Destroy(gameObject);
}
}
Destroyは引数に渡したGameObjectと全てのコンポーネント、GameObjectの子にある全てのオブジェクトを破壊します。
3Dゲームオブジェクトを動的に生成させる
3Dゲームオブジェクトを動的に生成するスクリプトは下記のように書きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sample5 : MonoBehaviour
{
public GameObject prefab = null;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (prefab == null) return;
Instantiate(prefab);
}
}
オブジェクトを動的に生成するためには、Instantiate関数を使用します。
スクリプト上で動的に生成できるようにすることで、ボタン押下のタイミングで弾を発射させるなんてことができます。
コードの中身を見ていきましょう。
ここではまず、public修飾子でprefabを定義しています
定義したprefabには自前で用意したprefabをInspector上で、アタッチしておきます。
Update()時に念のため、prefabがnullの時は生成処理を行わないようにしています。
最後にInstantiate関数の引数にprefabを渡して、オブジェクトを生成します。
まとめ
今回は、Unityの基本操作であるゲームオブジェクトの移動/回転/削除/生成について説明しました。
動的にオブジェクトを移動させたり、生成/削除を行う場合には必須の技術になるので覚えておきましょう。
コメント