Unityクラス

Unityで簡単なゲームを作りたいと思っております。 / 2

3 コメント
views
1 フォロー
2

いわゆるスライドパズルですな。

1.ピースの数で箱・枠の大きさをかえる方法。
 方法はいくつかあるので、これが正解ってのはないです。

 方法1・エディターで画面を作成せずにプログラムで管理する

 方法2・2Dの場合はImageを作ると自動でCanvasという描画用の領域ができます。
     CanvasはMainCameraを動かしても拡大縮小されないので、
     CanvasのコンポーネントにCanvasScalerというのがあるので、
     UI Scale Mode を 「Scale With Screen Size」に変更する。
     Reference Resolution項目のXとYの数字を変動させるとCanvasの最大値が変わって
     自動で拡大縮小できます。 ここの数値をプログラムで「ピースの数」を元に変動させればいいかな。

 方法3・大きさの違うピースを用意する。
     もしくは同じ画像で大きさを変えたピースを作っておく。

2.ランダムにピースを配置する方法。
  (ピースの数で大きさが変わるのでその方法)
 プログラムでピースの座標をいじります。
  gameObject.transform.localPosition
 ここにXYZの値がはいっています。

 座標は Random.Range(0,10); この場合は0-9の値がランダムで作られる。
 で作れますが、「すでにそこには他のピースがある」などをチェックしたり、
 すべてのピースが所定の位置についたのでクリアなどを判別するため、
 Unityの機能ではなくプログラムで管理するのが良いかな。

3.ピースを動かす際に、押しずらすように動かす方法。
 プログラムで管理ならば、自分で座標を動かせばよいです。
  https://docs.unity3d.com/ja/current/ScriptReference/Transform-localPosition.html

 Unityの物理演算を使用したい場合は、AddForceで「押す」ことができます。
 https://docs.unity3d.com/ja/current/ScriptReference/Rigidbody2D.AddForce.html

とはいえ文章だけだとわからんと思うので、作り方のページを作ろうと思います。

昔、C言語で作ったものはあるので、参考に置いておきます。
https://drive.google.com/open?id=1iyGN1tQv_XnxpHFc8I8pacfxgrWGyrzf
ソース_1.odtというファイルが「user.cpp」というC++のプログラムをWordで見れるようにしたものです。
user.cppをメモ帳で開いてもプログラムがみれます。

for ( i = 0; i < 100; ++i ) {
a = GetRand(24);
b = GetRand(24);
c = pazz_flag[a];
pazz_flag[a] = pazz_flag[b];
pazz_flag[b] = c;
}
たとえば、パーツをランダムに配置する部分ですが、最初パーツは綺麗に並んでいてpazz_flagにパーツの数字が入ってます。
適当に選んだ2つを入れ替える。という処理をしています。

通報 ...