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

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

【Unity4】車を走らせる!GetKey, FixedUpdate, velocity【レースゲーム2】

Unity5.1.1p3 Personal(2015年7月)

f:id:hiyotama:20150505151209p:plain

 

前回の続きです〜

 

今回は車を走らせたいと思います〜

 

【目標】キー操作で車を動かせるようにする!

 

【課題1】車を前方と左右にキー移動させる

まずは車に重力と衝突判定を取り付けます〜

Car1オブジェクトにAddComponent>Physics>RigidBodyと、BoxColliderを取り付けて下さい〜

RigidBodyに関しては、転倒したり曲がって走らないように、ConstraintsのFreezeRotationを全てチェックしてください〜

BoxColliderに関しては、下の設定画像を参考にColliderの位置を調整して下さい〜

 

f:id:hiyotama:20150503163536p:plain

RigidBodyのFreezeRitationとCollider位置調整

 

続いてCar1オブジェクトにmoveScriptというスクリプトを設定します〜以下ソースです〜

 

 

FixedUpdateの中でキーボードの上ボタンを押している間Accelメソッドを実行しspeedを+3し続け、同時にRigidBody.velocityの値を変更することによって、前方へ進みます〜

 

FixedUpdateは端末によってフレーム回数が左右されないため、性能の良い端末だととても早く、性能の悪い端末だととても遅いといった不具合を防いでくれます〜

 

キー判定には①GetKeyDown②GetKey③GetKeyUpと3種類あり、①は押した瞬間、②は押している間ずっと、③はボタンを放した時にそれぞれ処理を実行します〜今回は車のアクセルなので、押している間ずっと前に進み続けるGetKeyを使います〜

 

velocityはどれだけの距離を移動するかという速度を表しております〜今回の場合、xとyは速度を加えず、z軸方向にのみspeedを指定し、前に勧めております〜

 

右ボタンを押した時に実行されるRightメソッドは、車のX軸が5より小さい時(道路からはみ出ていない時)movePowerの数値分右へ移動します〜transform.position.yやtransform.position.zは、今の位置を取得しているだけですので、X軸以外は移動しません〜

左ボタンのLeftメソッドも同様の処理が書かれております〜

 

最後にCourseオブジェクトに付いているMeshColliderのConvexにチェックを入れた上で、IsTriggerにチェックを入れて下さい〜

今回は関係ないのですが、次回この車をジャンプをさせる時にOnTriggerEnterという処理を使うための下準備です〜

ちなみにIsTriggerにチェックを入れるとColliderが無効になりますので、今車が衝突しているのは、CourseではなくGreenとなります〜が、CourseとGreenの高さは0.05しか違わないので、問題ないでしょう〜

 

f:id:hiyotama:20150503153952p:plain

車が動くようになりました

 

今回はここまでです〜

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

 

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

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

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

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

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

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

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

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