- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!GameObjectを動かす
GameObjectをスクリプトで動かすには、まず対象となるGameObjectを配置します。
別途スクリプトをAssetとして作成して、GameObjectにコンポーネントとして加えます。
カメラや光源、サウンドなどもGameObjectとして割り当てられるため、これらはすべて同じ手順で動かすことが可能です。
!!手順
!GameObjectの作成
メインメニューの「GameObject」-「Create Other」-「Cube」を選択。
シーン上にボックスの形状が配置されます。
!C# Scriptの作成
ProjectツリーのAssetsを右クリックし、ポップアップメニューより「create」-「c# Script」を選択。
生成されたScriptの名称を「BoxScript」とします。
そして、アイコンをダブルクリックしてMonoで以下のように記述。
using UnityEngine;
using System.Collections;
public class BoxScript : MonoBehaviour {
private Vector3 m_pos;
// Use this for initialization
void Start () {
m_pos = transform.localPosition; // 形状位置を保持
}
// Update is called once per frame
void Update () {
transform.localPosition = m_pos; // 形状位置を更新
m_pos.x += 0.05f;
}
}
!スクリプトをGameObjectに割り当て
Assets内のスクリプトのアイコンをドラッグして、シーンのGameObjectまで持ってきます。
{{ref_image unity_attach_component_01.png}}
これで、指定のGameObjectにスクリプトを割り当てることができます。
{{ref_image unity_attach_component_02.png}}
以上で、メインメニューの「Edit」-「Play」を選択すると、GameObjectが+X方向に1フレーム更新ごとに0.05fだけ移動する動きをします。
!!スクリプト内での移動処理
GameObjectは、Position(位置)/Rotation(回転)/Scale(スケール)の要素を持ちます。
これを変更することで、移動や回転制御を行うことができます。
!移動 (Position)
Vector3 m_pos = transform.localPosition;
m_pos.x += 0.05f;
transform.localPosition = m_pos; // 移動を更新
この場合は、+X方向に0.05f移動。
!回転 (Rotation)
回転は「Quaternion」型であるので、以下は便宜上オイラーのVector3型で保持。
なお、オイラーにした場合のXYZ要素は角度の単位(0-360)になる。
Vector3 m_rotation = transform.localRotation.eulerAngles;
m_rotation.y = (m_rotation.y + 2.0f) % 360.0f;
transform.localRotation = Quaternion.Euler(m_rotation); // 回転を更新
この場合は、Y軸中心に2.0度回転。
!スケール (Scale)
Vector3 m_scale = transform.localScale;
m_scale.x += 0.1f;
transform.localScale = m_scale;
この場合は、X軸方向に+0.1分拡大。
!!スクリプト内で特定のGameObjectを動かす
「[[シーン内のGameObject/Componentを取得|unity_script_get_gameobject]]」の要領で、
GameObject obj1 = GameObject.Find("xxxx");
GameObject obj1 = GameObject.Find("xxxx"); // xxxx のGameObjectを取得.
Vector3 v = obj1.transform.localPosition;
v.x += 0.1f;
obj1.transform.localPosition = v;
とすると、特定のGameObjectを動かすことができます。