前提・実現したいこと
Unity初心者です。
Unity2D(ver.2029.3.8f1)でチェスのようなゲームを作っています。
空のオブジェクトの中に駒のオブジェクト、移動範囲のオブジェクトを入れて、
下記のスクリプトを駒のオブジェクトにアタッチし、komaの変数に空のオブジェクト、hanniの変数に移動範囲のオブジェクトを入れて一つの駒を管理しようとしています。
駒をクリックした時に移動範囲が表示される。移動範囲のいずれかをクリックし、その場所に駒が移動するようにしたいと思い下記のスクリプトを書きました。
これを別の駒のオブジェクトに同じようにアタッチしたのですが、実行して駒をクリックした時選択した駒のオブジェクトだけでなく別の駒のオブジェクトも一緒に選択されてしまいます。
クリックした駒だけが選択され移動できるようにしたいのですがどうしたらいいでしょうか。
(boolでtrueなら動かせる、farseなら動かせないようにし、駒をクリックした時にその駒がtrueになるようにしようと思ったのですがboolの使い方がよくわかっておらず、どこにどのように記述したらいいかわかりません。ほかにいい方法があったらおしえていただきたいです。)
発生している問題・エラーメッセージ
オブジェクトをクリックすると別のオブジェクトも選択されてしまう。
using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.UI; public class idou : MonoBehaviour { public GameObject koma; public GameObject idouhanni; public bool myturn; private GameObject GetClickObject() { GameObject result = null; if (Input.GetMouseButtonDown(0)) { Vector2 tapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); Collider2D collition2d = Physics2D.OverlapPoint(tapPoint); if (collition2d) { result = collition2d.transform.gameObject; } } return result; } void Update() { GameObject obj = GetClickObject(); if (obj != null) { koma.transform.position = GetClickObject().transform.position; } if (obj != null) { idouhanni.SetActive(!idouhanni.activeInHierarchy); } } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。