パズドラみたいなパズルゲーム[Unity]2記事め
きょうは、移動が出来るようになった!
縦横ナナメ移動。(たまに動かない時もある・・・)
クリックイベントの取得
クリックが効いてない、と思ったら、コライダを追加していなかった。。
BoxCollider2Dというものがあるので追加。
そうすると、OnMouseDown () OnMouseDrag () が、ちゃんと動くよ!
次回、ブロックを削除して落下、連鎖させます。
Unityの親子。★transform.parent とgameObject
gameObject.transform.parent.gameObject.transform.gameObject.transform.gameObject・・・・。
永遠に繰り返せるという話。
transform ←gameObject & transform →gameObject
まず、
transform ←gameObject
gameObject から、transform にアクセスするには
gameObject.transform
transform →gameObject
transform から、gameObjectにアクセスするには
transform.gameObject
親子のgameObjectがほしい時
子(ぜんぶ)
for(int i=0; i<transform.childCount; i++){ Transform childObject = transform.GetChild (i); } //childCount:子要素の数
親
GameObject parentObject = gameObject.transform.parent.gameObject;
transform とgameObject
あれ。あれ。子がTransform で、親がGameObjectになってた。 上に書いたやつ。
逆のは
gameObject.transformとかでアクセスしていけば、
子のGameObject
取得したいのがgameObjectだったら、
for(int i=0; i<transform.childCount; i++){ GameObject childObject = transform.GetChild (i).gameObject; }
親のTransform
Transform parentObject = gameObject.transform.parent.gameObject.transform;
・・・・.parent.gameObject.transform?
Transform parentObject = gameObject.transform.parent.gameObject.transform;
じゃなくて、
Transform parentObject = gameObject.transform.parent;
で、これでもう。Transform だった。
以上。永遠に繰り返す、という話。でしたgameObject.transform.gameObject.transform.gameObject.transform.gameObject・・・・。
なんか普通に。よけいに書いちゃったりするー。
ちなみに
//作成したgameObject のtransform.parentに //親にするオブジェクトの transformをセットすると、 //Instantiateしてからの親子階層がつくれるんだって。 GameObject gObj = (GameObject)Instantiate(プレハブ); gObj.transform.parent = 親.transform;
いつか使いそう。φ(・・。)♪
Unity 4.3で 2Dゲーム[C#] パズドラ風パズル
いつのまにかUnity 4.3がリリースされていたみたいです。
2Dゲームが作りやすくなったみたい。
というわけで、
パズドラのパズル部分っぽいパズルゲーム(マッチ3ゲーム、スリーマッチ)を作ってUnity 4.3の 2D機能を使ってみよう。できるといいな。
プロジェクトを作る
新規作成します。
2Dが選択できる
Sceneビューにも右上に2DのボタンがあるのでONにしてみた。
ブロックを表示する
テクスチャにする画像をAssetフォルダに保存して、Hierarchyにドラッグ&ドロップ
すると、Sprite Rendererというコンポーネントを持って
いい感じに配置されています。スプライトってなに?
そのスプライトをHierarchyからProjectにドラッグ&ドロップ
すると、prefabになりました。
ブロックの種類ごとにそれぞれprefabつくります。
prefabができたら、Hierarchyにあるものは全部削除して、スクリプトで配置する
public static int numColors = 6, w = 7, h = 7, gridLength = w * h; public Transform[] prefab = new Transform[numColors]; void Start () { for (int i = 0; i < gridLength; i++) { int var = Random.Range (0, numColors); Vector3 pos = new Vector3 (i/h - w/2, i%h - h/2, 0); Transform tOb = (Transform)Instantiate (prefab [var], transform.position + pos, transform.rotation); } }
InspectorでTransform[] prefab にプレハブをいれておけば、ブロックが出来る。はず。
最初から3つ以上そろってるのは、こことかを参考に無くしていく。
そして。
今日は。
とりあえず、ブロックの配置ができた!
スプライトってなんだろう。
こんな感じの使い方でいいのかは分からないです。
なんか突っ込みどころとか、おかしい箇所あれば、教えてもらえれば嬉しいです。
ちゃんと完成するといいな。