今回は飛行機の挙動を追加してみます。
StandardAssetsの飛行機
Unity 5系からStandardAssetsに飛行機の挙動が追加されました。
事前に用意されているPrefabはレシプロ機とジェット機の二種類ですが、この二つの違いはパラメータなので、概ね同じ物と思っても良いです。
強いて言うなら操作法が若干異なります。
今回はコレを使って、サクッと飛行機の挙動を追加してみようと思います。
サクッと飛行機の挙動を追加する
まずはStandardAssetsのVehiclesをインポートして、飛行機全般の挙動をインポートします。
ついでにCarの挙動も付いてきますが、まぁうん。
次にAssetStoreやら適当な所から飛行機のモデルを入手してインポート、モデルをシーンに配置します。
飛行機の場合は3D Model>Vehicles>Airで見つけられます。モデルによってはSpaceとかでも良いかもしれません。
インポートしたらドラッグ&ドロップでシーンに配置。
飛行機の親オブジェクトにAeroplane User Control 2Axisコンポーネントを追加します。
Aeroplane User Control 2Axisを追加すると、必要なコンポーネント(rigidbodyやaeroplane controller)が自動的に追加されます。
Aeroplane Controllerにエンジン出力や旋回性能等、色々とあります。
後は、飛行機のサイズを大体30Mくらいに設定し、同程度のサイズのコライダーを設定します。コライダーは飛行機モデルにMeshColliderを付けConvex設定とかにしとけばOKです。
これを行わないと、飛行機に対してエンジン出力が高すぎる的な感じなのか、上手く動作しません。具体的にはロールやピッチの動作が変になります。
小型機で行いたい場合は、Aeroplane Controllerのパラメータを調整します。
操作を自分好みに変更する
この飛行機の挙動、操作が(無駄に)CrossPlatformInputManagerを使用していたり、物によってはマウス操作が必要だったりと若干面倒な所があるので、自分で操作出来るようにします。
基本的に動きはAeroplaneController.Move(ロール, ピッチ, ヨー, スロットル, エアブレーキ)
で制御すれば良いだけなので、簡単に書き換える事が出来ます。
モバイル向けにするなら、まぁCrossPlatformInputManager使ったままでも良いかと。
Aeroplane Controllerのパラメータ
- MaxEnginePower
エンジンの最大出力 - Lift
前進時に発生する揚力 - ZeroLiftSpeed
揚力が適応されない速度 - RollEffect
ロールの性能 - PitchEffect
ピッチの性能 - YawEffect
ヨーの性能 - BankedTurnEffect
banked turnの性能 - AerodynamicEffect
空気の影響度 - AutoTurnPitch
バンクターンしてない状態に戻す力 - AutoRollLevel
ロールしてない状態に戻す力 - AutoPitchLevel
ピッチしてない状態に戻す力 - AirBrakesEffect
エアブレーキがDragに与える影響 - ThrottleChangeSpeed
スロットルの変化する速度 - DragIncreaseFactor
速度がDragに与える影響