Unityクラス

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

3 コメント
views
1 フォロー

初めて質問させていただきます。
Unityでゲームを作りたいと思っております。
初心者なのですがとりあえず自分のスマホでテストできるようにはなりたいです。
考えているゲームは、
「 2Dでそれぞれに文字・絵図を描いた正方形の箱(ピース)を複数、枠(正方形or長方形)の中に並べ、1マスだけスペースを空けてピースをずらしながら並べ替える。」
質問です。

1.ピースの数で箱・枠の大きさをかえる方法。
2.ランダムにピースを配置する方法。
  (ピースの数で大きさが変わるのでその方法)
3.ピースを動かす際に、押しずらすように動かす方法。

質問は以上です。
Unityのサンプルプログラムで簡単なオブジェクトの配置、マウス等を使った動かし方は分かったのですが。先に進みません。
初歩的な質問で申し訳ございませんが、ご回答のほどよろしくお願いいたします。

taro
作成: 2019/02/26 (火) 06:41:27
通報 ...
1
名無しのUnityさん 2019/04/25 (木) 18:48:46

いまさら質問が書き込まれているのに気が付いたー

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つを入れ替える。という処理をしています。

3

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

 これ間違いです。
 もしくはプログラムで大きさを変える。
 と書きたかったところ。