Unity を使って何か作りたいなーできれば Oculus Rift 的なもので動くものを作りたいなーと思って日常を過ごしています、私です。
ゲームエンジンであり、ゲーム制作環境である Unity は以前からインストールしていたものの、なんだかいろいろあって手が進まずにいたんですが、Unity 5 のリリースもあったことだし GDC で VR は盛り上がってるしで気分が良くなったので何か遊べるレベルのものを作ってみたいなあという気持ちになりました。それでいろいろ探した結果、公式のチュートリアルでブロック崩しを作ることに。公式めっちゃわかりやすい。
一応遊べる?ものができました。製作時間は4時間ほど。経過は続きにて。
ゲームはこちらをクリックして開きます
動作には Unity Web Player が必要です。Windows と Mac 用をこちらでダウンロードできます。
プレイ動画
ブログに埋め込みたい…サーバー借りちゃおうかな…(生活安定してからだr
参考にしたページ様
Unity – Developer – はじめての Unity 公式のチュートリアル。とーーーーーっても丁寧。ほぼこのまま作りました。
UnityのInputで入力を扱う – Qiita 入力関係について。
Unity C# リロード(初期状態にもどる)的な処理 ゲームをリセットする方法。
右往左往したこととか
そもそも、右往左往するための右と左もどっちだったかわからないなあという状態なので、まあほとんど全てに右往左往したんですけれども…
自機にボールがぶつかるとボールが減速する
結構悩みました。公式のサンプルファイルと違うところがないのに、なぜかあっという間に減速して停止。違いは公式の自機 Mass が50、自分のは 2 くらいで調整していたことでした。これを見てもしやと思い、公式の Mass を1位にしてみたら、公式もボールが減速していきました。再びもしやと思い、公式の Mass 50 で何度も跳ね返させていると、やっぱり減速。
結論としては、Rigidbody で自機に Is Kinematic を設定しなければ自機の反動がボールの速度に影響を与えてしまうという事のようでした。いくら質量を増やしたところでゲームが長引いた時にボールが減速してしまったのではなんかどうなのよ感あるので、ここは初めてなりに頑張って解決しました。ここをみてる時にピンときました。
Kinematic にしておいたほうが、自機に慣性がつかないのでクラシックなブロック崩しっぽいし?
ん?そんなに右往左往してないぞ?
書いてて右往左往した点がそんなになかった事に気づきました。Unity すごい。初心者なのに僕すごい。公式チュートリアルすごい。少し詰まったのは以下の点です。
- ボールが落ちると終わりなのでリセットしたい → if(Input.GetButton(“ボタン名”) で Application.LoadLevel(“シーン名”) をトリガー。これを Main Camera のコンポーネントに。
- 自機からの跳ね返りが単調でつまらない → 四角い自機を Capsule にして Mesh Colider を設定。Mesh Colider は複雑な形だと重くなる欠点があるらしいが、今回はシンプルなので大丈夫。
未解決の気になる点 / 実現したい事
- バーが左右の壁を通り抜けないようにしたい
- 壊したブロック数の計測(ページリロードまで保持)
- 操作方法はゲーム内に書いたほうがページ書き換えなくて良くて楽だなあ
- 時々自機でボールを枠外に押し出してしまう。これが埒外の存在というやつか。
- とりあえず平易だし UnityScript メインで書いてるけど、なにかと C# がいいって言うし(とある会社の Unity デベロッパーさんから UnityScript は結局 C# にコンバートされてるという話を聞いた)C# ゴリゴリ書けるようになりたい。