スポンサーリンク

Unity実習5、ゲームを作ってみよう編パート1-2

金曜日の続きです

前回ボールを作ったので、今回はキャラクター作り
まず、空のオブジェクトを作成
名前を変えます、ちょっとスクショする場所が悪くて写ってなかったり
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_14-10-12_No-00

スクリプトを追加します
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_14-11-4_No-00

本のとおりに記述
ちなみに、21行目、「20,0」ってなってますが「20.0」です
後々Unityでエラーがでて気付きました
間違ってるところを教えてくれるってのは親切ですよねぇ
SnapCrab_Assembly-UnityScript - HiyokoCreatorjs - MonoDevelop-Unity_2016-5-16_14-18-38_No-00

元々用意されているキャラクターを取り込みます
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_14-40-3_No-00

当たり判定を追加
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_14-44-2_No-00

このままだと、当たり判定がキャラクターの足を中心に球状になっているので、キャラクターを覆うように調整
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_14-46-9_No-00

重力を追加した後、キャラクターに「Hiyoko」タグをつけます
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_14-47-55_No-00

キャラクターを動かす処理を作るために、スクリプトを追加
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_15-12-35_No-00

相変わらず何書かれてるか分かりませんが、本のとおりに記述
今回はミス無し
SnapCrab_Assembly-UnityScript - ObjMovejs - MonoDevelop-Unity_2016-5-16_15-26-41_No-00

キャラクターをプレハブ化
プレハブ化っていうのはアレなんですかね、常に表示させる訳ではなく、必要なときにだけ、例えばスクリプトから指示を受けた時だけ出てくるオブジェクトだとか
そういうのにするための作業なんでしょうか
FPSの銃弾とか、モブ敵みたいな
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_15-22-33_No-00

最初に作った空オブジェクト、そこのObjにプレハブ化したヒヨコを追加
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_15-23-10_No-00

ゲームをプレイすると、奥からヒヨコがわらわらと
ボールをぶつけると吹き飛んでいきます
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_15-24-41_No-00

このままだと奥にボールが溜まり続けるので
一定時間したら消えるようにBallにスクリプトを追加
このくらいなら、なんとか覚えられそう
SnapCrab_Assembly-UnityScript - DestroyBalljs - MonoDevelop-Unity_2016-5-16_15-36-25_No-00

次にUI作り
スコアのテキストを追加
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_15-43-34_No-00

位置やサイズを変更
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_15-45-48_No-00

スコアの数字が、得点が入るたびに増えるようにスクリプトを作成
SnapCrab_Assembly-UnityScript - Scorejs - MonoDevelop-Unity_2016-5-16_15-48-49_No-00

キャラクターのスクリプトにも一行追加します
SnapCrab_Assembly-UnityScript - HiyokoCreatorjs - MonoDevelop-Unity_2016-5-16_15-51-42_No-00

早速テストプレイしてみようとすると
なんと、エラー

"All compiler errors have to be fixed before you can enter playmode!"

なんだって?調べてみると「エラーがあるから、テストプレイする前にそれ直してね」とのこと
エラーを見てみるとまたスクリプトが間違ってたようで

Scoreのスクリプトの6行目
var と書くところが vae になってました
修正したら無事プレイ可能に
スコアも加算されます
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-7-19_No-00

ゲームオーバー画面の作成
UIのテキストを追加して、色や文字を変更
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-10-35_No-00

スクリプトを追加
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-14-57_No-00

スクリプト記述
SnapCrab_Assembly-UnityScript - UiControllerjs - MonoDevelop-Unity_2016-5-16_16-18-39_No-00

パラメータを設定
スクリプトが動作したときに、どのUIテキストを動作させるか~ってとこですかね
これによって、プレイ中はGameOverが非表示になります
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-19-25_No-00

ゲームオーバー時の処理作り
またスクリプトです...
以前作ったDeathZoneにスクリプトを追加
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-21-30_No-00

記述
SnapCrab_Assembly-UnityScript - DeathZonejs - MonoDevelop-Unity_2016-5-16_16-26-59_No-00

DeathZoneのColliderにある”Is Trigger"のチェックボックスにチェックを入れます
これで、DeathZoneに当たり判定がなくなりました
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-27-51_No-00

リスタートボタンを作ります
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-37-41_No-00

文字やサイズを変えて、ゲームオーバーの下に
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-39-10_No-00

UiControllerのスクリプトに追記します
SnapCrab_Assembly-UnityScript - UiControllerjs - MonoDevelop-Unity_2016-5-16_16-48-9_No-00

その後、CanvasのButtonに、ReStartをドラッグ&ドロップ
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_16-49-34_No-00

ReStartにスクリプトを追加します
名前をLoadGameとし、ゲームオーバー後に再び読み込むように設定
SnapCrab_Assembly-UnityScript - LoadGamejs - MonoDevelop-Unity_2016-5-16_17-0-6_No-00

すると、黄色い△でエラーが出ました

Assets/LoadGame.js(7,19): BCW0012: WARNING: 'UnityEngine.Application.LoadLevel(String)' is obsolete. Use SceneManager.LoadScene

???
調べてみると
スクリプトで 「Application.LoadLevel(sceneName)」としているところ
どうも、この書き方が古いらしく、新しい書き方にしてくれとのこと
まぁ、この本読んでて思っていましたが
情報が古いみたいです
といっても、Unity5なのは変わりません
このエラーはUnity5.2→5.3となる時に出るみたい?
で、このアップデートがあったのが2015年の12月、ひよこ本が発売されたのが2015年の7月!
まぁ、仕方ないですね...

なので、エラーを消すためにスクリプトを書き換えてみます
Application.LoadLevel と書かれているところを SceneManager.LoadScene ってすればいい?らしいのでやってみると

エラーが黄色から赤になりました...
とりあえず、黄色ってことは、多分行ける?と思うのでもうそのままで行きます

InspectorにあるLoadGameのScene Name、ここにMainと入力

次にボタンの関連付け
On Clickのところにある+を押して「Runtime on」と書かれているところの下にHierarchyにあるReStartをドロップ
本にはProjectビューから~って書いてあるのですが、ProjectにはReStart無いんだけど
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_17-30-10_No-00

その隣のNo Functionを押して、LoadGame→LoadGame()とします
何故か、本と違ってこっちのUnityだとLadGame()になってました、どうなってんだか

キャラクターの生成をストップする処理を作ります
HiyokoCreatorのスクリプトに追記
SnapCrab_Assembly-UnityScript - HiyokoCreatorjs - MonoDevelop-Unity_2016-5-16_17-43-8_No-00


こうして、ようやくゲームになりました
SnapCrab_Unity Personal (64bit) - Mainunity - Chapter6Game - PC Mac Linux Standalone DX11_2016-5-16_17-44-42_No-00

応用でタイトル画面を追加したりとありますが
その元気はないですね...やれやれ

ちなみに、まだ続きがりまして
・スマートフォン向けに改良しよう!
とのこと
これはまた明日です...
関連記事

Leave a Reply


管理者にだけ表示を許可する

Comment

Leave a Reply


管理者にだけ表示を許可する