Unity歴約1か月半の初心者です
自分は今Unityで将棋のようなボードゲームを作っています
その中で、「盤上の駒をクリックするとその駒が行けるマスを表示する(マスの上に薄いオブジェクトcanmassを生成する)」
という処理を考えています
そこで、
●ゲームマネージャースクリプト(空オブジェクトにアタッチ)
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<Koma>().Move; Debug.Log("Komaがクリックされた"); } }
● 各駒オブジェクトにアタッチ
using UnityEngine; using System.Collections.Generic; using System.Collections; public class Hisya : Koma { public GameObject canmass; public void Move() //クリックで移動可能表示 { Debug.Log("Hisyaがクリックされた"); Instantiate(canmass, new Vector3(transform.position.x, 0.1f, transform.position.z + 1), Quaternion.identity); }
●各駒の親クラスであるKomaスクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Koma : MonoBehaviour { public void Move() { Debug.Log("Komaスクリプト"); }
というふうに、Rayがヒットしたオブジェクトにアタッチされたスクリプト内のMoveメソッド(移動可能マスcanmass表示)を使う というやり方で試そうとしてみました
しかしこれを実行すると、エラーはでないのですが
Komaがクリックされた
Komaスクリプト
とConsoleにでるだけで実際にクリックしたhisyaオブジェクトにアタッチされたスクリプトは反応しません
どうすれば上手くいくでしょうか
また同じような処理で良いやり方があれば教えていただきたいです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/05 02:55