なんとかシステムが完成

いよいよ完成が近づいてきました。 残るはクリア判定とピースの絵を追加でしょうか。 まずクリア判定を作ってみます。 クリアの条件は、全てのピースが上を向くです。 回転のメソッドを作った時に、方向が分かっているので 判定は簡単に作れそうです。 判定用の変数を用意して、ピース毎に上を向いているかチェックさせ 全てが上を向いていればクリアですね。 public class GameManager : MonoBehaviour { public GameObject[] PieceBt;     //ピースの取得 new Transform transform;      //トランスフォーム取得用変数 private string[] PieceDire = new string[36]; //各ピースの方向 private bool Judge; //ピースの向きを判定する変数 bool型変数で判定用の変数を追加します。 ピースの向きを判定して、上を向いたらtrueになるようにします。 続いて、判定メソッドを用意します。 void JUDGE() { for(int i = 0; i < 36; i++) { if (PieceDire[i] == "LEFT"…

続きを読む

パズルの機能を作る

パズルゲームなので、最初から上を向いていては話になりません。 なので向きをバラバラにする処理を作ります。 まず処理に必要なものを考えてみます。 ・ピース毎にランダムな向きにする ・初期位置を記憶させる まず、ランダム変数で向きを変える事を考えてみます。 ランダム変数は Random.Range(開始の数字,終わりの数字 ) で取得できます。 方向が4方向なので、0~4で設定して数値の出方を見てみます。 using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class GameManager : MonoBehaviour { public GameObject[] PieceBt;     //ピースの取得 new Transform transform;      //トランスフォーム取得用変数 private string[] PieceDire = new string[1]; //各ピースの方向 // Use this for initialization void Start () { PieceDire[0] = "UP";       //初期方向を指定   //ランダム変数を10回取…

続きを読む

なんとなくを試してみる

ピースの方向を判断できないかな… 遅延の処理を試していた時に、なんとなくこんな事を考えていました。 最初は現在角度を読み込んで、0、90、180、270の条件で判定していましたが 角度がおかしくなる以上、判定に使えません。 なので向いてる方向が分かれば判定できるのに… と考えていました。 方向を読み取る方法ってないのかな?検索しても出てこない… … … なければ作ればいいのか! と思って、ピースの向きを指定する方法を考えてみました。 向きを指定してやれば、そのまま判定にも使えます。 向きを指定するには、どうすればいいか整理します。 ・初期角度は正位置なので分かっています。 ・ピースをクリックしたら左に90°づつ回転していく。 ・クリックする度に上→左→下→右の位置情報を更新する これで設定できそうです。 変数などを追加する必要があるので、 追加項目を整理してみます。 ・方向を指定する変数 ・開始時に方向を取得 ・回転時に方向を判断して回転させる 補足として、+90°の移動処理だとズレた時に修正できないので、 やはり直接角度を入力しようと思います。 まずは、方向指定用の変数を追加と開始時に方向を取得するです。 using System.Collections; using System.Collections.Generic; using UnityEngine; …

続きを読む

処理を遅延させられないか?

なぜ0°に戻らないか考えてみましたが、ハッキリ言って分かりません(´`;) ? 分からないものは仕方がないので、別の方法を見つけるしかない! と考え直して、次の一手です。 しかし・・・ 案が出てこない・・・ 処理が0.3秒なのでピースを押した時に処理を0.3秒遅延させるのはどうだろうか? とう言う事で using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class GameManager : MonoBehaviour { public GameObject[] PieceBt;     //ピースの取得 new Transform transform;      //トランスフォーム取得用変数 private int PieceID; //ピースNo代入用変数 // Use this for initialization void Start () { } // Update is called once per frame void Update() { } public void PushPiece(int a) …

続きを読む

うまく行かない・・・  (。>_<。) えーん

ピースが変な角度になるのでスクリプトを修正していきます。 移動時間が長いから押せてしまうのでは? と言う事で移動時間を0.3秒にしてみました。 ズレる・・・ クリックの方が早く反応します。 0.1秒にするか?でも0.1秒だとほぼ瞬間移動です。 Tween系を入れてる意味が・・・ うーん・・・ ピースを押した時に位置が0、90、180、270になければ 動作しないように試してみます。 スクリプトを次のように変更です。 public void PushPiece(int a) { transform = PieceBt[a].GetComponent(); //ピースa番目のTransform情報を取得 float z = transform.localEulerAngles.z;           //Transformからローカル角度を取得 if (z == 0 || z == 90 || z == 180 || z == 270) //角度が固定位置なら動かす { transform.DORotate(new Vector3(0f, 0f, z + 90f), 0.5f); //DOTweenで0.5秒かけて90°回転させる } } これなら行けると思っ…

続きを読む