質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

1431閲覧

クリックしたオブジェクトのみ選択されるようにしたい。(選択した際他のオブジェクトも選択されてしまう)

itirou

総合スコア3

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/06/17 05:27

編集2020/06/29 08:20

前提・実現したいこと

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); } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

タグを使って指定することで解決しました。

投稿2020/07/01 05:20

itirou

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

koma を選択して、Active, 非Activie にしたいなら
idouhani のオブジェクトでなく koma を対象にすれば良いのでは無いでしょうか?

C#

1 if (objs != null) 2 { 3// idouhanni.SetActive(!idouhanni.activeInHierarchy); 4 objs.SetActive(!idouhanni.activeInHierarchy); 5 }

投稿2020/06/17 08:01

kamikaze.cappa

総合スコア558

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itirou

2020/06/17 08:47

回答ありがとうございます。 説明が足りなかったので詳細を記述します。 今の状況は、 駒1と駒2にこのスクリプトをアタッチし、駒1のkomaとhanni 、駒2のkomaとhanniniにそれぞれ別のオブジェクトを入れています。 やりたいことは、 ①komaをクリックで選択したらhanniが表示される。 ③hanniのオブジェクトをクリックすることでkomaがクリックしたhanniの位置に移動する。 これをそれぞれの駒のオブジェクトにアタッチして、動かしたいkomaをクリックした時に そのマウスがクリックしたオブジェクトだけが①、②をできるようにしたいです。 説明不足で申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問