にゃんたのUnityゲーム開発覚え書き

Unityのゲーム開発についてあれやこれや書いていきます。

素人がUnityでブロック崩し作ってみた - ④

ここからどうしよう

さて、前回までで一応ブロック崩しっぽいところまでいきました

ただ、単純に当たったら消えるだけでスコアもでないし、ボールが下に行ったらボール消えるだけで何もできない状態とか何なの状態なので、続きを作ることにしました。

※以下が前回まで

a-zero.hatenablog.com

 

追加要素の案

追加要素を考えてみた。一旦箇条書きで書いてみる。

  1. ブロックの色によって当たったときに消える回数を変える
  2. 段々とボールが早くなる
  3. とにもかくにもスコア表示
  4. ゲームオーバー画面ぐらい作ろう
  5. ついでにスタート画面も用意してみる?

 

こんなところですかね。

思いついた順で書いてみました。

一応ここまでやれば、それなりにゲームっぽくなるような気がします。

 

今日は一旦1と2ぐらいまでできればいいなーという緩い感じでやってみたいと思います。

3hぐらいでどこまでいけるかなー笑

記事更新もしたいからどこまでいけるかだなー

 

次回の記事にこうご期待!笑

 

ではではノシ

素人がUnityでブロック崩し作ってみた - ③

一応できた

あれからまた少し触ったり調べたところ衝撃の事実が判明。

 

a-zero.hatenablog.com

ひとつ前の記事で、三角関数入れたりして大変だった。説いた内容を書いたんだけど、

そもそもUnityの基本機能で跳ねたり、跳ね返ったりが可能でした。笑

 

Rigidbodyを設定して、Physic Materialで以下のように設定

・Dynamic Friction = 0 ※ 移動しているときにかかる摩擦(動摩擦)
・Static Friction = 0 ※ 静止しているときにかかる摩擦(静止摩擦)
・Bounciness = 1 ※ 弾力
・Friction CombineをMinimumに。※ 摩擦のを組合方法 = 2つのオブジェクトの係数の小さい方を選択
Bounce CombineをMaximumに。 ※ バウンドの組合方法 = 2つのオブジェクトの係数の大きい方を選択

f:id:sirosiro346:20170910230846p:plain

 

これで、抵抗や摩擦が限りなく低い状態でバウンドする設定に可能。

ただし、これでも速度はだんだん落ちてくるので、速度を維持するためのソースのみ、

BallのScriptにかく。

※以下はべた書きした場合のソースコードです

 

Vector3 V = transform.GetComponent<Rigidbody>().velocity; // 速度を取得.

if (V.x < 0.0f)

{   

 V.x = -1 * speed;

}

else{

    V.x = speed;

}

 

if (V.y < 0.0f)

{   

 V.y = -1 * speed;

}

else{

    V.y = speed;

}

 

こうすることで、跳ね返るようになります。

あとは、ステージをかこっている下のオブジェクトにボールが当たった場合のみボールを消すスクリプトを書きます。

if (obj.gameObject.name == "BottomWall")
{
 GameObject.Destroy(this.gameObject);
}

 

そんなこんなでこうなりました

youtu.be

 

ちょっと無理やりガーっと作った感じがあるので、

追加要素加えるときに少しソース直したりしてみたいとおもいます。

ブロックに当たるとバーがみじかくなったり、ボールが早くなったり、色によって壊れる回数が異なるようにブロックを変えてみたり。

素材そのものを変えてみたりとかいろいろいじくってみようと思います。

 

ではではノシ

 

 

 

素人がUnityでブロック崩し作ってみた - ②

とりあえずステージっぽいの作ってみた

とにもかくにもオブジェクト配置が先かなーと思い、オブジェクトをばこすこ置いて、

色付けたりして作ってみた。

 

f:id:sirosiro346:20170910182546p:plain

四角はCube、まるはSpereをGameObjectからCreate選択して配置。

なんとなくいい感じ。まだ何も動いてないけど。笑

 

必要な機能を考えてみた

ブロック崩しに必要な機能ってなんだろう?と思ったので考えてみた

  1. スライドバーがキーボードの矢印キーで移動する
  2. スライドバーに当たったらボールが反射する
  3. ブロックにボールが当たったらブロックが消える

大まかに分けて上の三つだと思う。

 

1 スライドバーがキーボードの矢印キーで移動する

1に関しては、矢印キーの操作が以下で取得、移動できた。

// 横移動の値を格納
float inputMoveNum = Input.GetAxis("Horizontal");

// 矢印キーの移動量に応じて横移動
transform.Translate(inputMoveNum * 0.02f, 0, 0);

 

2 スライドバーに当たったらボールが反射する

これね、ちょっと一筋縄でいかない。笑

ボールが指定した角度でちゃんと移動する仕組みを構築して、

どんな時にどのぐらいの角度で反射するか決める仕組みも用意する必要あり。

 

ボールの角度は、みんなだいすき三角関数を使って考える必要があるようで。

三角関数とかおぼえてないよーww

 

以下を参考に、作ってみた

unitylab.wiki.fc2.com

 

結果的には以下ソースで動いた。

int r = 2; //斜辺の長さ
int angle = 120;// 角度

float x = r * Mathf.Cos(Mathf.Deg2Rad * angle); //移動量X

float y  = r * Mathf.Sin(Mathf.Deg2Rad * angle); //移動量Y

 

// x軸、y軸に対して移動する処理
transform.Translate(x * 0.01f, y * 0.01f, 0);

 

画面はこんな感じ

f:id:sirosiro346:20170910183937p:plain

 

三角関数思い出すために久しぶりにノート触った。笑

とりあえず動いたのでいったん良しとします。

 

明日以降は、スライドバーの動きに合わせて角度を指定して動かす

といったところをやろうと思います。

 

ではではノシ

 

 

素人がUnityでブロック崩し作ってみた - ①

初めてのオリジナルアプリ開発

こんにちわ、siroです。

さて、前回はドットインストールのUnity基礎入門をやったので、

今回はいよいよ自分の力でアプリ作ってみたいと思います。

「オリジナルアプリ!」と意気込んでますが、ブロック崩しを作りたいと思います。

どのぐらいの難しさかよくわかってませんが、色々と勉強になりそうなので。

 

完成形のイメージ

f:id:sirosiro346:20170910153518p:plain

① ブロック要素

  これに対して、②の球を当てて消していく。

  色とかによって壊れるまでの回数が違ったりが一般的?だと思う。

② ボール

  ③のスライドバーを使ってこのボールを跳ね返して①のブロック要素を消していく

  何かのアクションで速くなったり遅くなったりしたら難易度少し上がりそうな予感

③ スライドバー

  ボールを跳ね返すスライドバー

  何かのアクションで短くなったり、すると難易度少し上がりそうな予感

 

さっそく作っていきます。

今日の作業割ったらまた記事更新します。

 

ではではノシ

 

心機一転

 

心機一転ということで

pythonがすごーく中途半端になってますが、色々と状況変わってたので、一先ずブログのタイトルから変えました。笑

Unityでゲーム開発を行った記事をメインに書いていこうと思います。
 

今後やりたいこと

まずは、勉強がてらクソゲー簡単なアプリを作って、無料公開できるサイトに投稿したたりしていこうかなーとぼんやり考えてます。
Androidiphoneアプリとしてリリースもできるんだけど、まずはUnityの扱いをしっかり覚えようかと。
全て無料で済ませるしね。笑
Androidは登録に数千円、iPhoneは8000円ぐらいかかったかな。
 Androidは一回のみでiPhoneは確か年間かかったはず
 

最初に作る予定のゲーム

ブロック崩しです。笑
ブロック崩しに決めた理由は、
四角や丸のオブジェクトだけで、ゲームの部品がまかなえるから敷居が低そう。
といったゆるーい理由です。笑
 
いきなりつくり込むのは無理(挫折の一途を辿る可能性大)なので、
敷居を低くして挑戦していきたい。
 
とりあえず、ドットインストールのUnityにて18まで行ったので、それ終わらせたら作る予定です。
あれやこれや進めていたら終わりました。笑
合計4時間ぐらいはやったと思います。
動画はjavascriptですがC#で書きたかったためそこの部分が余計に時間かかったぐらいで他はかなりスムーズだった印象。
 
サクサク進めたけど、Unityの簡単な使い方と便利な使い方を知ることができました。
Align With View (カメラ選択後にCtrl + Shift + F)で、今見えている状態をカメラ位置に変更できるのは本当に便利だと思った。
※今まで地道にカメラ移動していたあれはなんだったんだ・・・
 
上からボールが落ちてきて、下にあるスライドバーで受け止めるだけのゲーム
受け止めるとスライドバーがどんどん小さくなっていくため少しハラハラする?感じのゲームでした。
一個でもとりこぼすと、ゲームオーバとなります。

下はUnity実行時のイメージ

※実行部分以外が青い理由は、このモードのときに設定変更しても停止時に値が戻ってしまうため、色を設定変更していますf:id:sirosiro346:20170910003017p:plain

 
今回のをもとに一旦ブロック崩しぐらいは行けそうな気がするので、
明日以降時間を見つけてチャレンジしてみます。
 
※ドットインストールは下記参照
 
Unityは無料で公式サイトからダウンロードできます
 
 
ではではノシ