「「【Unity 入門】2時間で作るユニティちゃんRunゲーム!」をやってみた。- 「第1部:スタートからゴールまで」 –に引き続いて
「【Unity 入門】2時間で作る五目並べゲーム!」
をやってみた。
だいぶ慣れて来たのか、今回は戸惑うことも減ってきたような気がする。
これまで、サンプルスクリプトは解説が進む度に新しいのを上書きしていればよかったが、今回、
private bool CheckStone(int color)
{
}
に関してはそこまでのスクリプトに追加する。
一番最後に追加してエラーになった。
正しくは、
public class GameController : MonoBehaviour
{
}
の中の最後に追加した。
まあ、実際は最後でなくて途中でもいいと思うが試してない。
肝心なのは一番外側の{}の中であること。
下の絵を参照。
あと、この部分も追加で下のように挿入する。
ちなみに、序盤で100個のCubeをコピペで並べるようなことが書いてある。
これはさすがに面倒なのでスクリプトに書いた。
何でこれを手でやらせる?
検索しまくりのやっつけなのでどうか分からないが、自動的に一応ちゃんとした碁盤の目が描かれている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Create : MonoBehaviour { // Start is called before the first frame update void Start() { int x, y, c=0; for (x = 0; x < 10; x++){ if (c == 0){ c = 1; }else{ c = 0; } for (y = 0; y < 10; y++){ GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.transform.position = new Vector3(x, 0, y); cube.transform.localScale = new Vector3(1, 0.5f, 1); if (c == 0){ //cube.GetComponent<Renderer>().material.color = Color.red; cube.GetComponent<Renderer>().material.color = new Color32(255, 184, 20, 255); c = 1; }else{ cube.GetComponent<Renderer>().material.color = Color.blue; cube.GetComponent<Renderer>().material.color = new Color32(255, 204, 102, 255); c = 0; } } } } // Update is called once per frame void Update() { } } |
Create.csとして空のGameObjectにアタッチしておけばいい。
一番の肝の「Ray」の説明が全然書かれていないけど、要するに光線(Ray)を飛ばしてObjectに当たったらその位置を得る、という仕組みらしい。
敷き詰めたCubeの近くでクリックすれば、光線が飛んで一番近いCubeに光線が当たってそのCubeの位置が得られる。
それをもとに碁を置く位置が決まる。