オブジェクトを移動させるにはtransform.positionを使い
Vector3で位置を設定することでObjectが移動します。
ボタンをクリックするとGameObjectが移動する例です。
GameObjectの移動
ここではGameObjectの移動と合わせて、Button UIのCanvasを「Screen Space – Camera」での設定を使ってみたいと思います。
GameObjectを移動させるためはスクリプトで transform.position に Vector3 (x, y, z) を設定することでpositionを変えて移動させることができます。
1 2 |
GameObject obj; obj.transform.position = new Vector3 (x,y,z); |
Buttonの設定
「UI」から「Button」を選択します
Button とCanvas, EvenSystem が生成されました。Buttonの名前テキストを設定するTextも一緒に作成されています。
ただ、デフォルトのSceneでは見えないかもしれません。
ここにCanvasの設定が3種類ありますが、「Screen Space – Camera」を使います。
- Render Mode : Screen Space – Camera
- Render Camera はデフォルトであるMain Camera
- Plane Distance を「10」に設定。
Button 位置をInspectorで[0, 0, 0] に調整します
一例ですがこのような見え方で進めたいと思います。
GameObjectの作成
移動させるGameObjectとしてSphereを置きます。Buttonの文字が逆ですが、カメラの裏側になるのでこうなります。
SceneからGame画面にするとこのようになります。
Button Clickのスクリプト
前出ですが、GameObjectの位置は
1 2 |
GameObject obj; obj.transform.position = new Vector3 (x,y,z); |
このx,y,zで設定できますので、これを利用してスクリプトを作ります
Project の Create から
「C# Script」でスクリプトファイルを作ります
ButtonClick.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
using System.Collections.Generic; using System.Collections; using UnityEngine; using UnityEngine.UI; public class ButtonClick : MonoBehaviour { public GameObject obj; // カウンター private int counter = 0; // Use this for initialization void Start () { // 最初の位置を設定 obj.transform.position = new Vector3 (0.0f, 3.0f, 5.0f); } public void OnClick() { // クリックでカウントアップ counter++; // カウントアップに応じて位置を変える if (counter % 4 == 0) { obj.transform.position = new Vector3 (3.0f, 3.0f, 5.0f); } else if(counter % 4 == 1){ obj.transform.position = new Vector3 (3.0f, 5.0f, 10.0f); } else if(counter % 4 == 2){ obj.transform.position = new Vector3 (-1.0f, 3.0f, -5.0f); } else if(counter % 4 == 3){ obj.transform.position = new Vector3 (-3.0f, 3.0f, 3.0f); } } } |
このスクリプトファイルをHierarchyのButtonに
ドラッグ&ドロップします
Button の Inspector を見るとButton (Script)に
On Click()
List is Empty
というのがあるのでその下の「+」ボタンをクリック
List is Emptyのところに、None (Object)というのが表示されます。
その右の◉をクリックして出てきたダイアログから「Button」を選択します
次に、その隣にある「No Function」をクリックし、作成したスクリプトの名前の
ButtonClick からスクリプト内のメソッドBTonClick() を選択します。
Button の Inspector には
ButtonClick のobjを設定するようになっていますので
HierarchyからSphereをドラッグ&ドロップします
これでボタンをクリックするとSphereが移動するようになりました。