【Unity】ゲームオブジェクトの移動/回転/拡大/削除/生成

Unity
Unity_ゲームオブジェクト移動回転拡大削除生成のタイトル画像

今回は、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の簡易表現方法
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)
“transform.localScale”に、Vector3.oneを加算することによってオブジェクトを拡大させていきます。

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の基本操作であるゲームオブジェクトの移動/回転/削除/生成について説明しました。

動的にオブジェクトを移動させたり、生成/削除を行う場合には必須の技術になるので覚えておきましょう。

+1

コメント

タイトルとURLをコピーしました