左クリックで動くスクリプトでは、ボタンを押した際にも、プログラムが発動してしまいます。
ボタンを押したときに限って、プログラム動作を止める仕組みを作ってみましょう。
このように、クリックでボール発射できますが、ボタンを押したときのみ、発射が止まります。

テキストの作成
テキストを作成します。

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()を実行させるために、以下の手順で設定します。

ゲームプレイしてみましょう

クリックでボール発射しますが、ボタンをクリックした時だけ、発射は止まります。