ダンジョンを1マスずつ進むローグライク(チョコボの不思議なダンジョン)的なもの
こちらのページが最新版です
概要
- チョコボのように1マスずつの移動を実装する
- マップの壁には移動できないようにする.
- iTweenで滑らかに移動
設計もどき
- ステージを配列で作ってみます.
0:壁 1:床 2:Player 1:{0,0,0,0,0,0,0}, 2:{0,1,1,1,1,1,1,0}, 3:{0,1,1,1,1,1,1,0}, 4:{0,1,1,1,1,1,1,0}, 5:{0,0,0,0,0,1,0},
- キャラクターの位置を管理する配列も作っていきます
0: 1: 2:Player 1:{0,0,0,0,0,0,0}, 2:{0,0,0,0,0,0,0}, 3:{0,0,0,0,0,2,0}, 4:{0,0,0,0,0,0,0}, 5:{0,0,0,0,0,0,0},
この時キャラクターは3-6Positionにいます. ステージ配列の中の3-6の右隣は0,それ以外は1なので プレイヤーは2-6,4-6,3-5に移動できることがわかる
これをプログラム上で再現すればよいのである.
実装
今回はシンプルな配列を用意しその中で,左の移動のみを行う
ステージ配列
[0,1,1,0]
Player
[0,0,2,0]
コード
void Update () { if(Input.GetKey(KeyCode.A)){ // Player配列からPlayerの位置を検索 int index1 = player.IndexOf(2); // 配列の範囲内ででなければreturn if (index1 == 0) { Debug.Log("限界値"); return; } // プレイヤーから見て左の場所が壁かを判定 if(stage[index1-1] != 0){ Debug.Log("壁じゃなかった場合"); transform.position = new Vector3(index1 - 1, transform.position.y, transform.position.z); // 配列上のプレイヤー位置を更新する player[index1] = 0; player[index1 - 1] = 2; } else{ Debug.Log("左は壁だよ"); } } }
iTweenで動きをなめらかに
上記のコードではボタンを押した瞬間に一瞬で移動しちゃいますよね
なのでiTweenを利用して楽させていただきましょう
なめらかな移動
Hashtable moveHash = new Hashtable(); moveHash.Add("position", new Vector3(index1 - 1, transform.position.y, transform.position.z)); moveHash.Add("time", 0.2f); moveHash.Add("delay", 0.0f); iTween.MoveTo(gameObject, moveHash);
応用
今回はStageとPlayerしか作っていませんが,モンスター配列やアイテム配列,その他の配列があると更にゲームらしくなりそうですね. ステージを配列で管理していると敵の自動生成,アイテムの自動生成も容易にできそうですよね.