Unity2DでSplix.ioというゲームのようなものを作りたいと考えています。
Splix.io
四角形状の陣地から自分を上下左右に移動させて、移動したところに線を引き、自分の陣地に帰ったら囲んだ部分が自分の陣地となるようなゲームです。
そこで、UIのImageをPrefab化してスクリプトで等間隔に設置しています。
そのインスタンスの名前には、生成された順番が振り当てられています。
また四角形と四角形の隙間などを指定しています。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class GamePlay : MonoBehaviour { 7 8 public GameObject boxPrefab; 9 public Vector2Int boxMax; 10 public Vector2Int boxSize; 11 public Vector2Int boxSpace; 12 private Vector2Int posBase; 13 public Vector2Int panelSize; 14 private Color clearColor = new Color(0.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f); 15 private Color whiteColor = new Color(255.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f); 16 private Color redColor = new Color(255.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f); 17 private Color blueColor = new Color(0.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f); 18 19 // Use this for initialization 20 void Start () { 21 Blockset(); 22 } 23 24 // Update is called once per frame 25 void Update () { 26 27 } 28 29 public void Blockset () 30 { 31 var parent = this.transform; //子オブジェクトとして生成するため 32 posBase.x = (panelSize.x - ((boxSize.x + boxSpace.x) * (boxMax.x - 1))) / 2; 33 posBase.y = (panelSize.y - ((boxSize.y + boxSpace.y) * (boxMax.y - 1))) / 2; 34 Debug.Log(posBase); 35 for (int y = 0; y < boxMax.y; y++) 36 { 37 for (int x = 0; x < boxMax.x; x++) 38 { 39 int xPos = posBase.x + ((boxSpace.x + boxSize.x) * x); 40 int yPos = posBase.y + ((boxSpace.y + boxSize.y) * y); 41 int boxNumber = x + boxMax.x * y; 42 boxPrefab.name = boxNumber.ToString(); 43 boxPrefab.GetComponent<Image>().color = whiteColor; 44 //(撮影のため)boxPrefab.GetComponentInChildren<Text>().text = boxNumber.ToString(); 45 boxPrefab.transform.localScale = new Vector3(boxSize.x, boxSize.y, 1); 46 GameObject newBoxPrefab = (GameObject)Instantiate(boxPrefab, new Vector3(xPos, yPos, 0.0f), Quaternion.identity, parent); 47 newBoxPrefab.name = boxPrefab.name; 48 } 49 } 50 } 51} 52
ここまでは良いのですが、引いた線によって囲まれた範囲のImageの色を変更するという囲み判定の仕方が分かりません。
線は、LineRendererなどを使ったらなんとかできると思っています。線に沿ってMeshを作成してしようとも考えたのですが、難しそうなので断念しました。また、もっと良い方法等があれば教えてほしいです。Unity初心者で、丸投げな感じがしますが申し訳ありません。
回答1件
あなたの回答
tips
プレビュー