質問: ### 前提・実現したいこと オブジェクト(コマ)が選択されたとき、コマの上下左右のマスの色を変化させたい !![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/fcfdc0888fc09b092e346cf6d0a51e7f.png)明](c0b46e2c6f3f787a8e2e875d1ac318a5.png) ### 発生している問題・エラーメッセージ オブジェクトが選択されたとき、周囲のマスの色を変化させたい 調べてみると、色を変化させるためのプログラムのコードは出てきたのですが、 異なるオブジェクトの色を変化させたり、materialを使って異なるオブジェクトを変化させる方法は分かったのだが、同一オブジェクトの一部だけを範囲指定して色を変化させる方法が分からなかった どうすれば、良いのか教えてほしい ### 該当のソースコード `c#`using System.Collections; using System.Collections.Generic; using UnityEngine; public class cki : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { Touch(); } public void Touch() { } } ### 試したこと 「Unity範囲指定」「unityオブジェクト範囲指定」「unity範囲指定 発光」「unity色取得」「unityオブジェクト選択光らせたい」等のキーワードで検索した ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 考え方の一例です。 オブジェクトからオブジェクトへの参照をつけあうのはなにかと面倒です。 そこで、マス目に対応する二次元配列を用意して解決します。 1. まず、マス目に対応する二次元配列(6x6、Gameobject型)を用意します。 2. 二次元配列とオブジェクトが対応するように、配列にオブジェクトを格納します。 ちなみに、ゲームオブジェクトの取得は、GameObject.Find()を使ったり、なにかのクラスのプロパティにGameobjectを持たせInspectorから割り当てたりできます。また、プレハブからインスタンス化する方法があり、オブジェクト一つ一つに名前を付けたり、割り当てたりせず、for文で済むので楽です。が、作るゲームによっては、実行時にインスタンス化するのはちょっと...となるものもあるだろうので、そこは判断してみてください。 3. 各オブジェクトには、マス目に対応するインデックスを持たせておきます。 これで、あるマス目(ゲームオブジェクト)が指定されたら、その上下左右のマス目にあたるゲームオブジェクトを指定できますよね。あとは、マス目を指定する部分を作成すればいいです。 アクション性があり、物理演算の効くものなのであれば、衝突判定が使えます。見た目だけ3Dなのであれば、選択する円柱のオブジェクトの動きも別の二次元配列でも用意して制御したほうがいいかもしれません。