【Unity4】車を走らせる!GetKey, FixedUpdate, velocity【レースゲーム2】
Unity5.1.1p3 Personal(2015年7月)
前回の続きです〜
今回は車を走らせたいと思います〜
【目標】キー操作で車を動かせるようにする!
【課題1】車を前方と左右にキー移動させる
まずは車に重力と衝突判定を取り付けます〜
Car1オブジェクトにAddComponent>Physics>RigidBodyと、BoxColliderを取り付けて下さい〜
RigidBodyに関しては、転倒したり曲がって走らないように、ConstraintsのFreezeRotationを全てチェックしてください〜
BoxColliderに関しては、下の設定画像を参考にColliderの位置を調整して下さい〜
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しか違わないので、問題ないでしょう〜
車が動くようになりました
今回はここまでです〜
ありがとうございました〜
【Unity開発4】車を走らせたい!【ドライビングゲーム2】
【Unity開発4】車をジャンプさせたい!【ドライビングゲーム3】
【Unity開発4】道路を無限に伸ばし続ける【ドライビングゲーム4】
【Unity開発4】敵キャラをランダムで生成する【ドライビングゲーム5】
【Unity開発4】レベルによるスピード制限機能を追加する!【ドライビングゲーム6】
【Unity開発4】制限時間を設ける【ドライビングゲーム7】
【Unity開発4】タイトル・ゲームオーバーを仕上げる!【ドライビングゲーム8】