Unity歴約1か月半の初心者です
自分は今Unityで将棋のようなボードゲームを作っています
その中で、「盤上の駒をクリックするとその駒が行けるマスを表示する(各駒によって行けるマスは違います)」
という処理を考えています
そこで、
●ゲームマネージャースクリプト(空オブジェクトにアタッチ)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Game_Manager : MonoBehaviour { void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(ray, out hit)) { hit.collider.gameObject.GetComponent<??>().move; } }
● 各駒オブジェクトにアタッチ
using System.Collections; using System.Collections.Generic; using UnityEngine; public class komaA : MonoBehaviour { public GameObject canmass; //行ける場所表示用のオブジェクトです public void move() //クリックで移動可能表示 { { Instantiate(canmass, new Vector3(transform.position.x, 0.1f, transform.position.z + 1), Quaternion.identity); } }
というふうに、Rayがヒットしたオブジェクトにアタッチされたスクリプト内のmoveメソッド(移動可能マスcanmass表示)を使う というやり方で試そうとしてみました
後から駒を色々つけ足したりする場合に色々と増やすのは面倒なので、「飛車をクリックしたとき」とかではなく「クリックしたオブジェクト」そのものにアタッチされたスクリプト内のmoveメソッドを使用できるようにしたいです(ゲームマネージャースクリプト内では各特定の駒を指定せずクリックした駒を取得したいという事です。説明下手で申し訳ないです。)
上にも記述しましたが、
hit.collider.gameObject.GetComponent<??>().move; ```(↑自分の勝手なイメージです) こういう感じのができればいいなと思っているのですが「??」をどうすればいいのかわかりません
hit.collider.gameObject.GetComponent<null>().move;
とnullを入れてみても 「エラー CS1525 ')' は無効です。」 と 「エラー CS0019 演算子 '<' を 'メソッド グループ' と '<null>' 型のオペランドに適用することはできません」 というエラーがでてしまいます どうすれば上手くいくのでしょうか? また、他に同じような処理で良いやり方があれば教えていただきたいです
回答1件
あなたの回答
tips
プレビュー