!!!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"); // xxxx のGameObjectを取得. Vector3 v = obj1.transform.localPosition; v.x += 0.1f; obj1.transform.localPosition = v; とすると、特定のGameObjectを動かすことができます。