【Unity4】スピード制御機能追加! uGUI(Text), スクリプト間のメソッド呼出【レースゲーム6】
Unity5.1.1p3 Personal(2015年7月)
前回の続きです〜
今回はレベルによるスピードの制限機能を追加したいと思います〜
【目標】レベル機能をつけて、段階的にスピードを上げていく!
【課題1】画面にレベルを表示する
まずは画面にレベルのGUIを表示しましょう〜Hierarchy>Create>UI>Textを選択し、Textの名前をLevelに変更して下さい〜
GUI作成
uGUIのTextに関しては、以下エッセンスも参考にして頂けると幸いです〜
それではまずはCanvasのCanvasScalerの設定を行います〜ここの設定をしておくことで、スマホ等の解像度やアスペクト比の違いに対応できますので、大事です〜
UiScaleModeをScaleWithScreenSizeに、ReferenceResolutionをX:1280,Y:720,ScreenMatchModeをExpandにしておきましょう〜
詳しくは以下エッセンスで書いています〜
続いてLevelテキストの編集です〜まずはAssetStoreからフォントを落としてきましょう〜今回は、Computer Font PackというAssetの6809 chargenというフォントがゲームっぽいので、使います〜
Import
RectTransformのWidthを250、Heightを80、Text(Script)のTextをLevel: X、Fontを6809 chargen、FontSizeを52にします〜
ついでにText Colorをピンクにしましょう〜
Levelテキストの設定
そして、AnchorPresetsを右上に設定しましょう〜altを押しながらクリックです〜
RectTransformのまとめもありますので参照してみて下さい〜
これで画面の右上にAnchorが設定されたので、画面の大きさが変わってもいい感じに表示されます!
右上にレベルを表示
【課題2】一定距離を進んだ時、レベルを上げる
それではレベルを上げるscriptを作成していきます〜
MainCameraに作成したcreateScriptにて、一定のボーダーを超えた時、コースや敵キャラを生成する処理を実装してきました〜
同じようにMainCameraに、一定のボーダーを超えた時にレベルが上がる処理を実装したlevelTimeScriptを取り付けていきましょう〜以下ソースです〜
createScript内に書いてももちろん機能しますが、まぎらわしくなってしまうので、新たにlevelTimeScriptというスクリプトを作成しました〜「Time」の文字が入っているのは、後で制限時間もこのスクリプトに追記していくからです〜
それではまず、public変数であるlevelGUIとmoveScriptを指定してあげましょう〜
ドラッグ&ドロップ!
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くらいまで増やして少しずつ制限していったほうがいいかもしれません〜
レベル3でかなり速い
今回はここまでです〜
ありがとうございました〜
【Unity開発4】車を走らせたい!【ドライビングゲーム2】
【Unity開発4】車をジャンプさせたい!【ドライビングゲーム3】
【Unity開発4】道路を無限に伸ばし続ける【ドライビングゲーム4】
【Unity開発4】敵キャラをランダムで生成する【ドライビングゲーム5】
【Unity開発4】レベルによるスピード制限機能を追加する!【ドライビングゲーム6】
【Unity開発4】制限時間を設ける【ドライビングゲーム7】
【Unity開発4】タイトル・ゲームオーバーを仕上げる!【ドライビングゲーム8】