ウィンナスのプログラミング忘備録

アプリケーション制作をしている最中に発見したテクニックを忘備録としてまとめていきます。

【開発日記:ブロック崩し】第2回 UI周りを実装してみました!

2回目からUnityをいじっていきたいと思います!

今回は、以下の処理についてやっていきます。

  1. UIの配置
  2. プレイヤーの動き

 

UIの設置

まずはUIを決めていきます。

f:id:win-friendof:20160710213306p:plain

こんな感じのpng画像を用意しました!

紺色がプレイヤーになります。

黒い丸が転がすボールになります。

赤青のブロックが崩すブロックになります。

 

この一枚の画像を全てスライスしておきます。

以下の記事を参考にしてください!

【unity】1つの画像をスライスさせてみる

 

スライスしたら以下のように画像を配置しました!

f:id:win-friendof:20160710215953j:plain

一応、上下左右にあるプレイヤーは1つにまとめておきました。

 

プレイヤーの動き

次にプレイヤーの動きを作っていきます。

企画では加速度センサーを使ってプレイヤーを動かします。

以下の記事を参考にしてください!

【Unity2d】加速度センサーを使ってみた

f:id:win-friendof:20160710223115j:plain

4つのプレイヤーに「Box Collider 2D」と「acc_sensor.cs」を付与します。

また、それぞれのタブに「player_top」「player_right」「player_left」「player_bottom」といったタブを付与していきます。

 

では、「acc_sensor.cs」の中身を作ります。

//加速度代入
Vector2 acc_vec;
//速度バイアス
float bias = 13f;
//プレイヤー上下のY座標
float player_y = 4.5f;
//プレイヤー左右のX座標
float player_x = 7f;

// Use this for initialization
void Start () {

}
	
// Update is called once per frame
void Update () {
	//加速度の取得
	acc_vec = Input.acceleration;
	//プレイヤーを動かす
	movePlayer ();
}

void movePlayer(){
	//加速度を受取った場合実行
	if (acc_vec != null) {
		//タブごとに処理を分ける
		switch(this.tag){
		case "player_top":
			acc_vec.x = transform.position.x + (acc_vec.x * Time.deltaTime) * bias;
			acc_vec.y = player_y;
			break;
		case "player_bottom":
			acc_vec.x = transform.position.x + (acc_vec.x * Time.deltaTime) * bias;
			acc_vec.y = -player_y;
			break;
		case "player_right":
			acc_vec.x = player_x;
			acc_vec.y = transform.position.y + (acc_vec.y * Time.deltaTime) * bias;
			break;
		case "player_left":
			acc_vec.x = -player_x;
			acc_vec.y = transform.position.y + (acc_vec.y * Time.deltaTime) * bias;
			break;
		}

		//画面幅を越えたとき軸のポジションを戻す
		if (acc_vec.x > player_x || acc_vec.x < -player_x) {
			acc_vec.x = transform.position.x;
		}
		if (acc_vec.y > player_y || acc_vec.y < -player_y) {
			acc_vec.y = transform.position.y;
		}
		transform.position = acc_vec;
	}
}

 加速度を取得してその数値をポジションに加算します。

また、画面の幅を越えたときにx軸、y軸を戻す処理も加えておきました。

 こんな感じの動きになりました!

 

次回は画面回転の設定やボールの動きをやっていきます!

f:id:win-friendof:20160622000943g:plain