【UnityC#講座】ユニティちゃんでもっとスカイリム風に操作したい 前編【カメラ】



アセットストアで「平成最後応援セール」開催中!
日本時間2月11日9時から22日まで

アセットストア
Asia Pacific Pack

クーポンコード「LNY10PERCENT」ですべてのアセットが10%オフになります。
クーポンコード「LNY30PERCENT」でIconとAsia Pacific Packが30%オフになります。

◆◆◆◆


Unity2018.1.5f1
Windows10

もっとスカイリム風/ユニティちゃん正面

3ヶ月ほど前にこのような記事を書きました。

【UnityC#講座】ユニティちゃんをスカイリム風に操作する

そして最近スカイリムをチェックしてみたのですが、この記事で再現したのは屋内やダンジョンの操作方法になっていました。
このゲームはフィールドではスクロールでカメラの遠近を操作できるのですが屋内ではできません。
三人称と一人称の切り替えはフィールドではカメラが滑らかに動くのですが屋内では瞬間移動します。
なので今回はスカイリムのフィールドでのカメラの操作と移動方向の切り替えを再現してみました。

■ユニティちゃんとMain Cameraに親オブジェクトを与える

オブジェクトを出す

まずはいつも通りユニティちゃんをHierarchyかSceneに出してください。

UnityChan > Models > unitychan

そして空のオブジェクトを2つ出します。
名前は「Player」と「Axis」です。

Hierarchy > Create > Create Empty

Playerはユニティちゃんの親オブジェクトになります。
スカイリムでは一人称の時、人型オブジェクトを消しているようなので今回はユニティちゃんも消すことにします。

AxisはMain Cameraの親オブジェクトになります。
Axisを中心軸としてMainCameraはPlayerの周りを回ります。

ユニティちゃんとMain Cameraをそれぞれ子オブジェクトにします。
HierarchyでPlayerとAxisにそれぞれドラッグ&ドロップしてください。
ユニティちゃんはXYZ軸をすべて0にし、Main Cameraは放っておいて良いです。

もっとスカイリム風/Hierarchy/親子関係

おっと、ユニティちゃんのAnimatorは今回は必要ありません。
チェックボックスを外すか歯車マークをクリックしてRemove Componentで消してください。

もっとスカイリム風/Animator/Remove Component

あと床なのですが私は今回Terrainを入れましたが別にPlaneでも構いません。

Hierarchy > Create > 3D Object > Terrain

Hierarchy > Create > 3D Object > Plane

コンポーネントを追加する

PlayerにRigidbody、Capsule Collider、Animatorを入れます。
InspectorのAdd Componentで検索して入れてください。

RigidbodyはConstraintsのFreeze RotationのXYZにチェックを入れます。
そうすると勝手に回りだすことはありません。

もっとスカイリム風/Rigidbody設定

Capsule Colliderは上手くユニティちゃんの頭から足を覆うようにセットします。

もっとスカイリム風/ユニティちゃん/Capsule Collider

もっとスカイリム風/Capsule Collider設定

そしてAnimatorですが、Avatarの空欄の右の〇をクリックし、unitychanAvatarを入れます。
今回はそれだけでOK、Controllerは後で入れます。

もっとスカイリム風/Animator設定

地面についているか判定するオブジェクトを出す

次はもうひとつ空のオブジェクトを出してください。
名前は「GroundDesicion」でPlayerの子オブジェクトにしてください。

もっとスカイリム風/GroundDesicion

そしてSphere Colliderを入れます。
このようにPlayerのCapsule Colliderの下にちょこんと出るようにしてください。

もっとスカイリム風/GroundDesicion/Spehe Collider設置

あとIs Triggerにチェックボックスを入れると他のColliderやオブジェクトにぶつからなくなります。

もっとスカイリム風/GroundDesicion/Spehe Collider/Is Triggerにチェック

GroundDesicionには後でスクリプトを入れます。

■カメラを操作できるようにする

今回、MainCameraは親オブジェクトのAxisの回転によりPlayerの周囲を回ります。
しかしカメラが真上や真下を通って反対側に行くとカメラの向きが反対になるので上下から反対側に行けなくします。
そしてFキーにより三人称視点と一人称視点を切り替えることができ、一人称視点だとカメラと一緒にPlayerが向きを変えます。
あとユニティちゃんは一人称の時消えるようにします。
なぜ三人称では移動する時向きを変えるのに一人称では常に向きを変えるのか・・・それはスカイリムでそうなっていたからです(笑)
そしてマウススクロールでカメラとPlayerの距離を変えられるようにしました。

スポンサーリンク

スクリプトを書く

それではC#スクリプトを書きましょう。
名前は「Axis」です。

Project > Create > C# Script

Inspectorの設定をする

さてこのAxisスクリプトを同名のAxisオブジェクトにドラッグ&ドロップするかAdd Componentで入れてください。
それからInspectorで設定をします。

もっとスカイリム風/Axisスクリプト/Inspector設定

この画像の通りにPlayer、Main Camera、ユニティちゃんをセットします。
あとAxis PosはY軸を1.5、Third PosはZ軸を-3にしました。

さてカメラは上手く動くようになったでしょうか?

もっとスカイリム風/カメラ動かす

この記事は後編に続きます。

【UnityC#講座】ユニティちゃんでもっとスカイリム風に操作したい 後編【Animator Controller】

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています

■関連記事

【UnityC#講座】3D人型モデルの動かし方をユニティちゃんで学ぶ【Animator】

【UnityC#講座】ユニティちゃんにキソラちゃんがついてくるようにする【NavMeshAgent、Blend Tree】

【UnityC#講座】ユニティちゃんをスカイリム風に操作する

【UnityC#講座】ユニティちゃんでもっとAnimator Controllerを上手く使いたい

【UnityC#講座】AnimatorControllerを使いまわす【AnimatorOverrideController】

【UnityC#講座】AnimatorControllerの使い方

スポンサーリンク

目次に戻る


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください