【Unity】カメラをシェイク(揺らす)させる方法!

Unity

迫力のある演出でカメラが揺れるゲームっていっぱいありますよね。

今回はそんなカメラの揺れの実装方法を紹介していきたいと思います。

Cinemachineカメラを揺らしたい場合は、こちらの記事を参考にしてください↓

準備

今回のカメラの揺れにはかの有名な万能アセット「DOTween」を使用しますので、アセットストアからダウンロードしておきましょう。

ここからダウンロード↓

DOTween (HOTween v2) | Animation Tools | Unity Asset Store
Use the DOTween (HOTween v2) tool from Demigiant on your next project. Find this & more animation tools on the Unity Ass...

ダウンロードをしたら「Package Manager」からインポートしましょう。

初めてインポートをすると下のようなウィンドウが出てきます。

「DOTween」のセットアップをしましょうねというメッセージですので早速セットアップをしていきましょう。「Open DOTween Utility Panel」というボタンを押しましょう。

するとセットアップパネルが開かれますのでそこの「Setup DOTween…」を押しましょう。

このボタンを押すとコンパイルが開始しますのでしばらく待ちます。

コンパイルが完了すると下の二つのボタンが押せるようになりますので「Apply」を押してセットアップを完了させます。

これで準備は完了です。

スクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using DG.Tweening;

public class CameraShake : MonoBehaviour
{
    [SerializeField] private Transform cam;
    [SerializeField] private Vector3 positionStrength;
    [SerializeField] private Vector3 rotationStrength;

    private float shakeDuration = 0.3f;

    private void Update()
    {
        if(Input.GetMouseButtonDown(0))
        CameraShaker();
    }

    private void CameraShaker()
    {
        cam.DOComplete();
        cam.DOShakePosition(shakeDuration, positionStrength);
        cam.DOShakeRotation(shakeDuration, rotationStrength);
    }
}

このスクリプトでは右クリックでカメラを揺らすようにしています。

このスクリプトを適当なオブジェクトにアタッチをします。

自分の場合は、カメラを揺らす役割を持つ空のオブジェクトを作りそこにアタッチします。

スクリプトには、「Cam」「Position Strength」「Rotation Strength」の三つの項目があります。

「Cam」には揺らしたいカメラを入れます。

「Position Strength」では「X」「Y」「Z」軸それぞれの位置を揺らす強度を設定します。

「Rotation Strength」では「X」「Y」「Z」軸それぞれの角度を揺らす強度を設定します。

これで実行してみましょう。

このようにカメラの揺れが実装できました!

スクリプトの説明

今回のスクリプトで重要な部分はココ

 cam.DOComplete();
 cam.DOShakePosition(shakeDuration, positionStrength);
 cam.DOShakeRotation(shakeDuration, rotationStrength);

・DOComplete()はカメラの揺れアニメーションを完了させる関数です。

・DOShakePosition(揺らす時間, ポジションの揺れの強度);

こんな感じでDOShakePosition関数には揺らす時間, そのポジションの揺れの強度を引数にして渡せばX,Y,Z,軸それぞれに揺らすことができます。

・DOShakeRotation(揺らす時間, 角度の揺れの強度);

DOShakeRotation関数には揺らす時間, 角度の揺れの強度を引数にして渡せばX,Y,Z,軸の角度をそれぞれ揺らすことができます。

まとめ

いかがだったでしょうか?

こんな感じでカメラの揺れは簡単に実装できるので殴った時や殴られた時の演出に使ってみるのもいいでしょう。

コメント

タイトルとURLをコピーしました