爽快感たっぷりなブロック崩しを作りたい!!


以前、unityroomにブロック崩しを投稿しました。

  • 打ち返すところが半円で大きさが変わる。
  • ターゲットが丸
  • ターゲットに当たるとどんどん加速

というゲームです。Unityを初めて、2作目から3作目。
androidで出そうと思っていたんですが、途中で頓挫していました。
が、再始動しました!!!!
ということで途中経過のメモです。

どんなゲーム??


ブロックのないところで、ドラッグすると、その向きにボールを発射できます。ブロックがなくなれば終了です。と、かなり単純。

今、実装できている内容とそのポイントは??

  • ブロックとボールのライフポイント制と色の変化
  • ドラッグでのボールの生成と向きの設定
  • ボールの定速化
  • ポイント計算システム
  • ポイントの表示場所の工夫

ブロックとボールのライフポイント制と色の変化

ブロックは、最大3のライフポイントを持たせています。それに合わせて、青・黄・赤の色へ変化させています。ライフポイントは、Random.Rangeで乱数にしています。
ボールもブロックと同じくライフポイント制にしています。最初は、衝突ごとに一定のライフポイントが減るようにしていたんですが、あまりにもすぐにボールがなくなるので、衝突する相手に合わせて増減するように変更しました。

ドラッグでのボールの生成と向きの設定

今までもEventTriggerを使ってタッチやクリックの実装をしてました。
今回は初めて、PointerDownとPointerUpを使い分けにチャレンジしました。
PointerDownの位置を生成位置とします。
PointerUpの時にInstantiateでボールを生成。
向きはPointerDownとPointerUpの差を取って標準化したものに速度をかけています。
(rb.velocity=速度*Vector3.Normalized(PointerUpの位置-PointerDownの位置)

ボールの定速化

RigidBodyのVelocityで初速を与えているんですが、なぜかどんどん加速して最後には飛び出してしまいました。そのため、Updateの中で毎回、定速化しています。

ポイント計算システム

ポイントは、時間が短いほうが高ポイントで使用したボールが少ないほうが高い、という計算方法にしたかったんです。ということで
$$point=\frac{coef}{Time\times Count}$$
にしました。

ポイントの表示場所の工夫

今回は、画面全体をステージとして活用しています。
普段は、画面上に経過時間とポイントを表示したりしていますが、今回はあまり向きません。
そこでブロックやボールの下に表示するようにしました。
最初は一部しか見えていませんが、ブロックを壊すにつれてポイントが見えるようになります。
これはできる場合、できない場合がありますが、せっかくなので導入してみました。

これからの課題は??

今後の課題は、とりあえず下の2つです。

  • ポイント計算方法の再検討
  • モバイルへの対応

ポイント計算方法の再検討

現在の計算方法は、\(point=\frac{coef}{Time\times Ball Count} \)です。
ただ、反比例になっているので、できればシンプルな計算方法を導入したいんです。
$$point=(a-Time)(b-Ball Count)$$
あるいは、
$$point=(a-Time) \frac{b}{Ball Count}$$
1つ目は、a・bとも定数で、いわば残り時間方式です。ただ、定数をどのくらいの大きさにするかは考えないと。
2つ目は、現在のものと1つ目のミックスです。時間に比べ、ボールの数は大きくないので、分母に持って行っても大丈夫かなと。
$$point=(a-Time)-b \times Ball Count$$
3つ目は、シンプルに残り時間+ボールの数が罰則項という計算方法です。
1番シンプルなんですが、タイムオーバーのシステムを作らないといけないので悩みます。

モバイルへの対応

今は、unityroomへのテストアップロードを視野に640×400で作っており、ブロックの配置は16×10になっています。
マウスで操作するにはいいと思うんですが、タッチで操作するには小さすぎる気がします。
対策としては

  • ブロックを減らす
  • タッチ位置の修正スクリプト導入

のどちらかを考えています。

まとめ

今回、かなり早い進行状況なんですが、これからが正念場かなと。
また、ご報告します。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

トップへ戻る