unityを使って3Dのゴルフゲームを作ってみよう【プログラミング日誌】

programing

今回はドットインストールのプレミアム会員が学習できるUnityの3Dゴルフゲーム制作にチャレンジしてみたいと思います。私は1年間プログラミングスクールに通って、

「自分がやりたかったことって本当にこれだったのか・・・」

そう思い始めてから自分がやってみたいと思う分野を見つけて学習を続けています。

今は趣味と割り切って楽しく学習中です。

前回はシューティングゲームにチャレンジしましたが、残念ながら最後にデータがクラッシュして完成できませんでした。

プログラミングでゲームを作ってみよう【ドットインストール・Unity学習】
先日ドットインストールというプログラミング学習サイトでゲーム制作をしましたのでその時の内容を紹介したいとお思います。 私...



今回は上の画像のようなステージ上でボールを転がしてゴールに入れるというゲームを制作します。

スポンサーリンク

3Dゴルフを制作していきます。

それでは早速チャレンジします。

ステージを作ろう

まずはなんと言っても土台となるステージ部分ですね。

これは下の床の部分と側の壁の部分で構成されています。

そこで、3Dのキューブの素材を床(1個)+壁(4個)で構成して位置や向きを変えて配置します。

床面を芝生っぽくしたいですね。なので緑色に変えてみます。

うんうん。これだけでもう作っている感が出てきますね。

ボールを配置してみよう

あとはここにボールを置いてしまえば、もうゴルフっぽさが出てきます。

このボールが動くように物理演算用のコンポーネントというRigidbosyを追加します。

追加するだけで複雑なコーディングをしなくて良いのはすごいですね。

ちょっとカメラの位置を整えたら、ゲームの画面は今こんな感じです。

ますますゲームっぽいですね。

3D空間の座標を取得する。

次にボールを弾くための処理を作る必要があるようです。

なんだか難しくなってきました。

ゲームをする人が見ている画面と実際のゲーム内の床面をつなぐ点の位置から

座標を割り出す…

普段なにげなく遊んでいるゲームもそんな複雑な処理がされているんですね。

これはボールに対して処理を書いていきます。

平面とマウスがいる位置からでる光線が衝突する位置を調べたい。

そんなプログラムを書いていきます。

一文字間違えたりするだけでエラーでちゃんと動いてくれないのがプログラミングです。厄介ではありますが、【このままでは動かないよ】と教えてくれるだけありがたいですね。

ただ、どこが違うのかわからないとだいぶ四苦八苦します(笑)

画像の右下のウィンドウに位置情報が次々と書き出されています。どうやらちゃんとコードを書けてたみたいですね。

何度かエラーが出ていました。どうやらあちこち文字が抜けていたのが原因です。よくあります。

マウスで画面をドラッグして弾く

この処理にはどこからマウスを左クリックして、どこでマウスを離したかを知る必要があります。

つまり、始点と終点の位置情報を教えてあげないといけません。

そして終点ではどれだけの力を加えるかを伝えてあげます。

なんだかまるで数学や物理の時間みたいですが、

学習内容自体はとてもわかりやすく進めてくれています。

コーディングして、実際に動かしてみます。

中央あたりから左下に向けてマウスをドラッグして離したら

なんと右上方向に弾かれました!! すごい! 感動ものです

打数を表示してみる

今度は何回ボールを打ったかをカウントする表示を出していきます。

前回シューティングゲームの学習をしたときにここで色々トラブった思い出がありますが、

今回はちゃんとできました。

ではここから打った数だけの打数を表示できるようにしていきたいと思います。

弾いた分だけ、テキストの値をプラス1ずつ増やしていくプログラムを書いてちゃんとカウントされるようにしました。

これで前回の学習より一歩前に進めました。

ゴールを設置しよう

最後にゴールの設定です。適当な場所にゴールを設置して、そこから光が出るようにしています。

簡単な設定であっという間にゴールっぽいアニメーションがつけれるんですね。

ではゴールをした時の処理を書いていきます。

もしもボールがゴールに触れたら「ゴール」の文字を表示させて、ゲームを止める

という指示をプログラムに書いています。

ちゃんとゴールの文字が確認できています。

次のシーンを作ろう

一つのゲームがクリアできたら次のステージに移る。これを作っていきます。

先ほど作ったステージ1を複製して、少し障害物を置いてみました。

このファイルをステージ2として一緒に保存して、プレイしてみたいと思います。

先ほどゴールの設定の際に、ゴールしたら次のステージに移るよというプログラミングを書いているので、ステージ1をクリアするとステージ2に移りました。

障害物に当たるとちゃんと止まります。

すごい!! もうゲームになってきましたね。

ちょっとこれだとゲーム感がないので自分でもカリキュラム外で障害物を増やしてみました。

出っ張りを作ってみてボールを当ててみるとちゃんと出っ張りに当たった時の動きをしてくれました。

さらにアニメーションを追加しよう

なんとアニメーションという項目を使うと障害物に動きをつけることができるんだとか。

画像では分かりにくいですが、今赤い枠で囲まれている白い棒状の壁は上下に動いているんです。

これで完成しました!

あとは自分で好きなステージを作ってみて遊べそうですね。

大人になっての勉強は楽しい

子供の頃から勉強は大嫌いでしたが、大人になれば自分のやりたいことや知りたいことに特化して自由に学べるのは素晴らしいですね。

本当はUnityの学習を終えたらプレミアム会員を辞めようと思っていましたが、せっかくなら色々な技術を学んでみたいと思います。

私はiphoneユーザーなのでiOS関連の学習をしてみたいと思います。

またこちらで記事にしたいと思います。

コメント

タイトルとURLをコピーしました