Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity4】スピード制御機能追加! uGUI(Text), スクリプト間のメソッド呼出【レースゲーム6】

Unity5.1.1p3 Personal(2015年7月)

f:id:hiyotama:20150505151209p:plain

 

前回の続きです〜

 

今回はレベルによるスピードの制限機能を追加したいと思います〜

 

【目標】レベル機能をつけて、段階的にスピードを上げていく!

 

【課題1】画面にレベルを表示する

まずは画面にレベルのGUIを表示しましょう〜Hierarchy>Create>UI>Textを選択し、Textの名前をLevelに変更して下さい〜

 

f:id:hiyotama:20150504131906p:plain

GUI作成

 

uGUIのTextに関しては、以下エッセンスも参考にして頂けると幸いです〜

 

 

それではまずはCanvasのCanvasScalerの設定を行います〜ここの設定をしておくことで、スマホ等の解像度やアスペクト比の違いに対応できますので、大事です〜

UiScaleModeをScaleWithScreenSizeに、ReferenceResolutionをX:1280,Y:720,ScreenMatchModeをExpandにしておきましょう〜

 

f:id:hiyotama:20150504132311p:plain

 

詳しくは以下エッセンスで書いています〜

 

 

続いてLevelテキストの編集です〜まずはAssetStoreからフォントを落としてきましょう〜今回は、Computer Font PackというAssetの6809 chargenというフォントがゲームっぽいので、使います〜

 

 

f:id:hiyotama:20150712090842p:plain

Import

 

RectTransformのWidthを250、Heightを80、Text(Script)のTextをLevel: X、Fontを6809 chargen、FontSizeを52にします〜

ついでにText Colorをピンクにしましょう〜

 

f:id:hiyotama:20150504142034p:plain

Levelテキストの設定

 

そして、AnchorPresetsを右上に設定しましょう〜altを押しながらクリックです〜

 

f:id:hiyotama:20150504134004p:plain

 

RectTransformのまとめもありますので参照してみて下さい〜

 

これで画面の右上にAnchorが設定されたので、画面の大きさが変わってもいい感じに表示されます!

 

f:id:hiyotama:20150504135629p:plain

右上にレベルを表示

 

 

【課題2】一定距離を進んだ時、レベルを上げる

それではレベルを上げるscriptを作成していきます〜

MainCameraに作成したcreateScriptにて、一定のボーダーを超えた時、コースや敵キャラを生成する処理を実装してきました〜

同じようにMainCameraに、一定のボーダーを超えた時にレベルが上がる処理を実装したlevelTimeScriptを取り付けていきましょう〜以下ソースです〜

 

 

createScript内に書いてももちろん機能しますが、まぎらわしくなってしまうので、新たにlevelTimeScriptというスクリプトを作成しました〜「Time」の文字が入っているのは、後で制限時間もこのスクリプトに追記していくからです〜

 

それではまず、public変数であるlevelGUIとmoveScriptを指定してあげましょう〜

 

f:id:hiyotama:20150504143345p:plain

ドラッグ&ドロップ!

 

moveScriptがpublic変数になっていますが、この場合Car1オブジェクトを指定すれば、Car1オブジェクトについているmoveScriptが指定されたのと同じ意味になります〜

 

それではソースの説明に入ります〜まずはStartメソッドにてLevelを表示しています〜初期値が1なので、「Level: 1」と表示されます〜そしてUpdateメソッドにてカメラのposition.zがcountBorder(初期値2000)を超えた時、countBorderを2000、countを1ずつ追加し、LevelUpメソッドが呼ばれるようになっております〜

 

LevelUpメソッド内では、countが1・3・5・8の時のみレベルが変わるようになっております〜そして、moveScript.levelと書くことによりmoveScript内のlevel変数を直接変更することができるので、levelが変わった時は上書きされます〜また、レベルが上がったタイミングでGUIのテキストも新しいレベルに更新し、画面に表示されているレベルが変更されます〜

 

今回の設定ではレベルは5以上にはなりませんし、レベルが上がるタイミングも適当に決めてしまいましたが、countBorderにプラスする数やLevelUpメソッド内の条件を変えることで独自の設定にできますので、ぜひ色々といじってみて下さい〜

 

 

 

【課題3】レベルによってスピードを制限する

さて、一定距離を通過した時にレベルが上がるようになりました〜次はmoveScriptに追記し、レベルによってプレイヤーが出せるマックススピードを調整していきましょう〜以下ソースです〜

 

 

levelという変数をpublicで作成したので、これで先ほどのLevelUpメソッドでのレベルの更新が機能するようになりました〜このlevelを元にレベル別スピード制限を行っています〜

 

正直かなり速い設定なのでもう少し制限をきつくするか、レベルを10くらいまで増やして少しずつ制限していったほうがいいかもしれません〜

 

f:id:hiyotama:20150504150252p:plain

レベル3でかなり速い

 

今回はここまでです〜

ありがとうございました〜

 

【Unity開発4】下準備【ドライビングゲーム1】

【Unity開発4】車を走らせたい!【ドライビングゲーム2】

【Unity開発4】車をジャンプさせたい!【ドライビングゲーム3】

【Unity開発4】道路を無限に伸ばし続ける【ドライビングゲーム4】

【Unity開発4】敵キャラをランダムで生成する【ドライビングゲーム5】

【Unity開発4】レベルによるスピード制限機能を追加する!【ドライビングゲーム6】

【Unity開発4】制限時間を設ける【ドライビングゲーム7】

【Unity開発4】タイトル・ゲームオーバーを仕上げる!【ドライビングゲーム8】