C Sharp Unity

【Unity】キャラクター操作その7 – ジャンプ時にカメラの向きを変える

投稿日:

概要

Unityでキャラクターをジャンプさせたときに、カメラの向きが水平のままだと下の状況がみえなくていまいち迫力に欠けます。

そのため、ジャンプ中にカメラのアングルを少し下向きに変え、ジャンプ中に地面が視界に入るようにする方法についてメモします。

完成イメージ

Before

After

カメラの制御方法

上記のようにカメラの姿勢を制御するにあたり、以下の3つを行っています。

  • カメラオブジェクトの初期姿勢の取得
  • ジャンプ中に小刻みに目標角度まで変更
  • 着地後に初期姿勢に戻す

カメラオブジェクトの初期姿勢の取得

まずは一つ目のカメラオブジェクトの姿勢の取得方法から説明します。

スクリプトの中でGameObjectとしてmainCameraを定義し、

public class CameraAngle : MonoBehaviour
{
    public GameObject mainCamera;
    Vector3 iniMainCamPos;
    void Start()
    {
        iniMainCamRot = mainCamera.transform.localEulerAngles;
    }
}

その上で、キャラクターのInspectorからスクリプトのMain Cameraのフィールドにキャラクターのmain cameraのオブジェクトをドラッグ&ドロップで設定しておきます。

これで初期角度の取得が可能です。

小刻みに目標角度まで制御

続いてカメラ姿勢の制御を実施していきます。「小刻みに」とかいているのは=滑らかにという意味です。突然カメラの姿勢が一気に変わると気持ち悪いので徐々に目標書くまで動かしていこうということです。

今回は目標角度を20度として説明していきます。

滑らかに姿勢を動かすメソッドとしてVector3.SmoothDampというのがありますので、こちらを使用していきます。こちらは引数に以下を取ることができます。

SmoothDamp(現在位置,目的位置,現在速度,(最大速度),(経過時間))

具体的な使用例としては以下となります。

currentMainCamRot = mainCamera.transform.localEulerAngles;
mainCamera.transform.localEulerAngles = Vector3.SmoothDamp(currentMainCamRot, new Vector3(20, 0, 0), ref velocityZero, 0.1f);
}

初期姿勢に戻す

覚えておいた初期位置を代入するだけですが初期位置に戻す際も滑らかに戻します。

currentMainCamRot = mainCamera.transform.localEulerAngles;
mainCamera.transform.localEulerAngles = Vector3.SmoothDamp(currentMainCamRot, iniMainCamRot, ref velocityZero, 0.1f); 

これらを組み合わせて、ジャンプしている間だけ動かすというようなスクリプトが作って動かしたものが最初のアニメーションになります。

-C Sharp, Unity

執筆者:


comment

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

関連記事

【Unity】Visual Studio モジュールをインストール

Contents1 目的2 環境3 Step1 : UnityHubからVisual Studioモジュールをインストール4 Step2 : UnityでVisual Studioを開発環境として設定 …

UnityでPostProcessManager.cs(425,66): error CS0117: ‘EditorSceneManager’ does not contain a definition for ‘IsGameObjectInMainScenes’が出た時の対処法

Contents1 概要2 環境3 発生状況4 対処方法5 まとめ 概要 UnityのAsset StoreからParticle Packageをダウンロードしてimportしたところ、以下のエラーが …

Visual StudioでMSB8003,C1083が出たので対処

Contents1 目的2 環境3 発生したエラー4 .Net Frameworkを確認 目的 以下でUnity Hub経由でインストールしたVisual Studio Communityでビルドしよ …

【Unity】一定範囲に入ると追ってくるスクリプト

Contents1 目的2 環境3 完成系4 Step1 : プレイヤーの配置5 Step:2 追いかけてくるオブジェクトの配置6 Step : 3 スクリプトの作成7 Step : 4 動作確認 目 …

【Unity】既存のAnimationをRead-Onlyから編集できるようにする

Contents1 概要2 環境3 Read-Onlyになる事象4 Read-Onlyを回避する方法 概要 Unityで既存のAnimationをキャラクターにAttachする際、Animationで …

言語切り替え

カテゴリー