”【Unity】素人が7日間クソゲーを作り続けてわかったこと”を真似してみてわかったこと
まずはこちらの記事をお読みください。
作ったクソゲーを紹介しつつ、役に立ったページのうち上の記事に載っていないものを紹介していきます。
※以降、上の記事を読んだことを前提として書いています。
【私のスペック】
趣味でFlashゲームを作ってますが、Unityに関しては1年前にちょっと触ったっきりで、その時のことはほとんど忘れた状態からのスタートでした。
1日目 チュートリアル改造ブロック崩し
まずは紹介した記事と同じようにUnity公式のチュートリアルでブロック崩しを作ることにしたのですが、
第2回以降が「近日公開」となっているため、そこから先はこちらのサイトを参考にしました。
Unity3Dのゲームの作り方講座
その後、テクスチャを貼ってみたり、3Dを生かしたシステムに改造してみたりしました。
フリーテクスチャ素材館
その結果出来上がったのがこちら。物理演算が働いているので本当にブロックを崩している感じです。
2日目 玉転がし
物理演算を使うとスクリプトの量が少なくて済むので、いっそ物理演算だけでほぼ成り立つゲーム、「玉転がし」を作ることにしました。台を傾けるだけなら2行書くだけです。
実際にはゲームオーバー・ゲームクリア時の処理なども必要でしたが、コード書いてる時間よりもステージ作ってる時間のほうが長かったと思います。
3日目 レースゲームもどき
Asset Storeで無料の3Dモデルを探して使ってみました。宇宙船と木箱。
また、地形はTerrain Toolkitの機能を利用して作っています。
Terrain Toolkit を使って地形を自動で生成する | 餃子マナー
オブジェクト同士でデータをやりとりする必要があったのでやり方を調べてみたところ、いくつか方法がある事が分かりました。このゲームでは気分で使い分けてます。
Yaminabe:うにばな (講座みたいなもの 第一回)
kawanoyou: Unity GameObjectへのアクセス
4日目 おやすみ
Unityできる時間がなかった。
5日目 軟着陸ゲー
Asset StoreでNASAの本気を見たので、アポロ月着陸船の3Dモデルを使って軟着陸ゲームを作りました。
ロケット噴射エフェクトはUnity付属のパーティクルを使いました。
メインエンジンの推力は多分現実と同じになってるはずです。重力加速度も月面と同じにしています。
ActionScript入門Wiki - Unity - 重力加速度を設定する
6日目 謎の避けゲー
Unity付属のパッケージ「CharacterController」の中に、FPS風の入力で移動・ジャンプができる「FPSInputController」やマウスの動きに合わせて向きを変えられる「MouseLook」など非常に便利なスクリプトが用意されていることに気づいたので、それらを使用しました。
箱の影を表示させたかったのですが、Unity Proじゃないと影は使えないっぽいので半透明の黒いBoxを影に見立てて妥協しています。
7日目 THE 男たちの機銃砲座
公開されたばかりのP-47 サンダーボルトの3Dモデルを見つけたので使ってみました。
今更サウンドの鳴らし方を覚えました。"Play On Awake"というのが地味に便利で、例えば爆発のエフェクトにサウンドを追加してこれにチェックを入れておくと、爆発エフェクトを複製する度に勝手にサウンドが鳴ってくれます。
Flashで言うとMCの1フレーム目にサウンドを置いておくみたいな感じ。
座標や角度以外であっても、インスペクタに表示されている変数は基本的にスクリプトでも制御できることが分かりました。
例えば、被弾した敵が落ちるのはrigidbody.UseGravityをいじることで実装、カメラのズームはcamera.fieldOfViewの数値をいじることで実装しています。変数名や制御方法が分からなければUnity公式のリファレンスを見るのが良さそうです。
Unity Script Reference
8日目 ストライク○○ッ○ーズ
ゲームを7つ作るのが目標だったので、これが最後です。
BoxやCapsuleを組み合わせて空のGameObjectに入れることで、複雑な形状の当たり判定を持つ敵を作成。
機銃は「対空射撃」で作ったものをプレハブにして流用しました。
敵のビームは、マテリアルのShaderをParticles/Additiveにしてみたら光ってる感じになりました。
使ったヘリの3Dモデルはこちら→ HH-65C Dauphin
難易度調整をする時間がありませんでしたが、自分の中では満足のいくものができたと思っています。
気がついたこと
・下準備が整いまくり
物理演算、エフェクト、Skybox、地形、キャラクターの移動スクリプトなどゲーム制作のベースとなる部分が既に用意されているので、すぐにゲームの中核部分の制作にとりかかることができます。
3Dモデルなどの素材配布サイトはたくさんありますが、やはりAsset Storeという公式の場が用意されているのは大きいと思います。
また、自分で作ったものも流用しやすい仕組みになっていて便利です。
・GUIを作るのが面倒
よく言われていることですが、2Dのものは扱いづらいです。
GUIテキストやボタンを作る時は画面上にマウスで配置というわけには行かず、数字で座標を指定しないといけませんでした。まして完全2Dゲームを作るのであればUnityはやめた方が良い気がします。
しかし、Unity4.3から2D向けゲーム開発機能が追加されるらしいので、この問題は改善されるかもしれません。
Unity - Unity PRESS RELEASE – Unity、2D向けゲーム開発機能とクラウドサービスを新たに提供
・AS2に似ている
Unityはオブジェクトに直接スクリプトを書けるので、FlashのAS2と書き方が似ています。
私はこの書き方に慣れているので、個人的には高評価なところです。
・物理演算の魅力
物理演算を生かしたゲームでは、偶然面白い裏技が生まれることが多い気がします。
例えば「玉転がし」では、玉が右下にあるときに台を思い切り傾けるとゴールまでショートカットできます。
「箱よけレース」では、落ちてくる瞬間の箱に高速で突っ込むと稀にコースの外に出られます。
見方を変えれば不具合ですが、こういう遊びがあってもいいんじゃないかと思います。
・無料サーバーだと厳しい?
まず、拡張子.unity3dのファイルをアップロードできる無料サーバーは少ないです。
更に、テクスチャや3Dモデルを調子に乗ってたくさん使っていると意外と容量が大きくなるので、ファイルサイズ制限に引っかかりやすいです。実際、「対空射撃」は制限に引っかかったので地形などを削除しました。
まあ、有料サーバー使えっていう話なんですが。
・まずはクソゲーを作るべき
1年前にUnityを触った時は、いきなり中規模のゲームを作ろうとして挫折しました。
最初はどんなクソゲーでも良いので、とにかく公開まで持っていくことが大事なんじゃないかと思います。
まとめ
みんなもUnityでクソゲー作ってみようよ!!(リスペクト)
2013-08-30 :
Unityは1年前にちょっと触ってすぐ挫折したのですが、これを読んでやる気が復活したので、私も真似してみました。
作ったクソゲーを紹介しつつ、役に立ったページのうち上の記事に載っていないものを紹介していきます。
※以降、上の記事を読んだことを前提として書いています。
【私のスペック】
趣味でFlashゲームを作ってますが、Unityに関しては1年前にちょっと触ったっきりで、その時のことはほとんど忘れた状態からのスタートでした。
1日目 チュートリアル改造ブロック崩し
まずは紹介した記事と同じようにUnity公式のチュートリアルでブロック崩しを作ることにしたのですが、
第2回以降が「近日公開」となっているため、そこから先はこちらのサイトを参考にしました。
Unity3Dのゲームの作り方講座
その後、テクスチャを貼ってみたり、3Dを生かしたシステムに改造してみたりしました。
フリーテクスチャ素材館
その結果出来上がったのがこちら。物理演算が働いているので本当にブロックを崩している感じです。
2日目 玉転がし
物理演算を使うとスクリプトの量が少なくて済むので、いっそ物理演算だけでほぼ成り立つゲーム、「玉転がし」を作ることにしました。台を傾けるだけなら2行書くだけです。
実際にはゲームオーバー・ゲームクリア時の処理なども必要でしたが、コード書いてる時間よりもステージ作ってる時間のほうが長かったと思います。
3日目 レースゲームもどき
Asset Storeで無料の3Dモデルを探して使ってみました。宇宙船と木箱。
また、地形はTerrain Toolkitの機能を利用して作っています。
Terrain Toolkit を使って地形を自動で生成する | 餃子マナー
オブジェクト同士でデータをやりとりする必要があったのでやり方を調べてみたところ、いくつか方法がある事が分かりました。このゲームでは気分で使い分けてます。
Yaminabe:うにばな (講座みたいなもの 第一回)
kawanoyou: Unity GameObjectへのアクセス
4日目 おやすみ
Unityできる時間がなかった。
5日目 軟着陸ゲー
Asset StoreでNASAの本気を見たので、アポロ月着陸船の3Dモデルを使って軟着陸ゲームを作りました。
ロケット噴射エフェクトはUnity付属のパーティクルを使いました。
メインエンジンの推力は多分現実と同じになってるはずです。重力加速度も月面と同じにしています。
ActionScript入門Wiki - Unity - 重力加速度を設定する
6日目 謎の避けゲー
Unity付属のパッケージ「CharacterController」の中に、FPS風の入力で移動・ジャンプができる「FPSInputController」やマウスの動きに合わせて向きを変えられる「MouseLook」など非常に便利なスクリプトが用意されていることに気づいたので、それらを使用しました。
箱の影を表示させたかったのですが、Unity Proじゃないと影は使えないっぽいので半透明の黒いBoxを影に見立てて妥協しています。
7日目 THE 男たちの機銃砲座
公開されたばかりのP-47 サンダーボルトの3Dモデルを見つけたので使ってみました。
今更サウンドの鳴らし方を覚えました。"Play On Awake"というのが地味に便利で、例えば爆発のエフェクトにサウンドを追加してこれにチェックを入れておくと、爆発エフェクトを複製する度に勝手にサウンドが鳴ってくれます。
Flashで言うとMCの1フレーム目にサウンドを置いておくみたいな感じ。
座標や角度以外であっても、インスペクタに表示されている変数は基本的にスクリプトでも制御できることが分かりました。
例えば、被弾した敵が落ちるのはrigidbody.UseGravityをいじることで実装、カメラのズームはcamera.fieldOfViewの数値をいじることで実装しています。変数名や制御方法が分からなければUnity公式のリファレンスを見るのが良さそうです。
Unity Script Reference
8日目 ストライク○○ッ○ーズ
ゲームを7つ作るのが目標だったので、これが最後です。
BoxやCapsuleを組み合わせて空のGameObjectに入れることで、複雑な形状の当たり判定を持つ敵を作成。
機銃は「対空射撃」で作ったものをプレハブにして流用しました。
敵のビームは、マテリアルのShaderをParticles/Additiveにしてみたら光ってる感じになりました。
使ったヘリの3Dモデルはこちら→ HH-65C Dauphin
難易度調整をする時間がありませんでしたが、自分の中では満足のいくものができたと思っています。
気がついたこと
・下準備が整いまくり
物理演算、エフェクト、Skybox、地形、キャラクターの移動スクリプトなどゲーム制作のベースとなる部分が既に用意されているので、すぐにゲームの中核部分の制作にとりかかることができます。
3Dモデルなどの素材配布サイトはたくさんありますが、やはりAsset Storeという公式の場が用意されているのは大きいと思います。
また、自分で作ったものも流用しやすい仕組みになっていて便利です。
・GUIを作るのが面倒
よく言われていることですが、2Dのものは扱いづらいです。
GUIテキストやボタンを作る時は画面上にマウスで配置というわけには行かず、数字で座標を指定しないといけませんでした。まして完全2Dゲームを作るのであればUnityはやめた方が良い気がします。
しかし、Unity4.3から2D向けゲーム開発機能が追加されるらしいので、この問題は改善されるかもしれません。
Unity - Unity PRESS RELEASE – Unity、2D向けゲーム開発機能とクラウドサービスを新たに提供
・AS2に似ている
Unityはオブジェクトに直接スクリプトを書けるので、FlashのAS2と書き方が似ています。
私はこの書き方に慣れているので、個人的には高評価なところです。
・物理演算の魅力
物理演算を生かしたゲームでは、偶然面白い裏技が生まれることが多い気がします。
例えば「玉転がし」では、玉が右下にあるときに台を思い切り傾けるとゴールまでショートカットできます。
「箱よけレース」では、落ちてくる瞬間の箱に高速で突っ込むと稀にコースの外に出られます。
見方を変えれば不具合ですが、こういう遊びがあってもいいんじゃないかと思います。
・無料サーバーだと厳しい?
まず、拡張子.unity3dのファイルをアップロードできる無料サーバーは少ないです。
更に、テクスチャや3Dモデルを調子に乗ってたくさん使っていると意外と容量が大きくなるので、ファイルサイズ制限に引っかかりやすいです。実際、「対空射撃」は制限に引っかかったので地形などを削除しました。
まあ、有料サーバー使えっていう話なんですが。
・まずはクソゲーを作るべき
1年前にUnityを触った時は、いきなり中規模のゲームを作ろうとして挫折しました。
最初はどんなクソゲーでも良いので、とにかく公開まで持っていくことが大事なんじゃないかと思います。
まとめ
みんなもUnityでクソゲー作ってみようよ!!(リスペクト)