左クリックで動くスクリプトでは、ボタンを押した際にも、プログラムが発動してしまいます。
ボタンを押したときに限って、プログラム動作を止める仕組みを作ってみましょう。
このように、クリックでボール発射できますが、ボタンを押したときのみ、発射が止まります。
テキストの作成
テキストを作成します。
Textのインスペクタを設定します。
ゲームビューではこのように配置されています。
ButtoOnのテキストは削除しておきましょう。
プレハブの作成
Sphereを作成して、リジッドボディをつけます。
プロジェクトビューにドラッグ&ドロップして、Prefab化します。
Sphereの元データは削除しておきます。
スクリプトの作成
空のオブジェクトを作成します。
ClickShot.csを作成して、GameObjectに追加します。
ClickShot.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; public class ClickShot : MonoBehaviour { public GameObject prefab; public Text buttonOnText; void Update() { if(EventSystem.current.IsPointerOverGameObject()){ return; } if(Input.GetMouseButtonDown(0)) { GameObject ball = GameObject.Instantiate (prefab)as GameObject; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 dir = ray.direction; ball.GetComponent<Rigidbody>().AddForce(dir * 3000); } } public void ButtonDown() { buttonOnText.text = "Button On"; } } |
using UnityEngine.UI; と using UnityEngine.EventSystems; を忘れずに記述しておきましょう。
次に、GameObjectのインスペクターを確認します。
プレハブにはSphereを入れ、ButtonOnTextにはTextを入れます。
ボタンの作成
ボタンを作成します。
ボタンの配置を変更します。
ゲームビュー上ではこのように配置されています。
ボタン押下で、ButtonDown()を実行させるために、以下の手順で設定します。
ゲームプレイしてみましょう
クリックでボール発射しますが、ボタンをクリックした時だけ、発射は止まります。