コンテンツにスキップ

VKC Item Camera

HEOCamera_1

VKC Item Cameraコンポーネントは演出目的等で通常のカメラから別のカメラ制御に切り替えるために使用します。
この機能を使うことにより、イベントシーンなどでのカメラの切り替えや特殊カメラワークを作ることができます。
カメラの切り替えは後述するようにHeliScriptからおこないます。

このオブジェクトタイプを使用可能なItemクラス

設定項目

名称 初期値 機能
Show true オンにすると表示します

高度な設定

名称 初期値 機能
Auto Loading true 有効の場合、本Itemはワールド入場時に自動で読み込まれます。
無効の場合は自動で読み込まれないため、動的ローディングを使用するか、HeliScriptでLoad()を使用して読み込みます。
Clickable false クリック可能かどうかを変更します
Item Render Priority 0 Itemの描画順序を決定します。
詳細はRenderingSettings / Priority Listをご参照ください。
Show Photo Mode true 写真撮影モードの際、itemを表示するかどうかを変更します

使い方

1. 空のGameObjectを作成し、VKC Item Cameraコンポーネントをアタッチしてシーン上に配置します。

HEOCamera_2

なお、本オブジェクトはVKCItemFieldとは別個のアイテムとして扱われるため、Worldオブジェクトの外に置かれても問題ございません。

HEOCamera_3

2. HeliScriptを書く

VKC Item Cameraをアタッチした空オブジェクトはアイテムとして出力されます。 そのため、SetPosSetQuaternionといったアイテムクラス用の関数を使用することができるほか、Camera専用の関数も使用することが可能です。

Camera専用の関数

  1. bool SetCamera()
    現在の映像を映すカメラを該当のカメラアイテムにします。
    成功したらtrue、失敗したらfalseが返ってきます。

  2. void ResetCamera()
    現在の映像を映すカメラをデフォルトのプレイヤー追従のものに戻します。

上記の関数を利用したHeliScriptの例が下記になります。

component EventCameraTest
{
    Item m_Camera;
    bool is_evented;
    float Timer;

    public EventCameraTest()
    {
        m_Camera = hsItemGet("CameraObj");
        is_evented = false;
    }

    public void Update()
    {
        Timer += 10*hsSystemGetDeltaTime();
        m_Camera.SetPos(makeVector3(7*hsMathSin(DEGtoRAD(Timer)),2,7*hsMathCos(DEGtoRAD(Timer))));
        m_Camera.SetQuaternion(makeQuaternionYRotation(DEGtoRAD(Timer + 180)));
    }

    public void ChangeCamera(string dummy){
        is_evented = !is_evented;
        if(is_evented){
            m_Camera.SetCamera();
        }else{
            m_Camera.ResetCamera();
        }
    }
}

これを実装したシーンが下記のようになります。
イベントカメラが有効となっている時、ワールドの中心を軸として回転するカメラワークとなります。
以下の画像ではSphereにCallScriptを入れており、クリックするたびカメラが切り替わるように実装されています。

HEOCamera_4

HEOCamera_Result

その他知見

イベントカメラには下記の特徴があります。

  • プレイヤーの操作はカメラの影響を受ける
  • 一人称視点にするとプレイヤーはカメラの位置にワープする

したがって、イベントカメラを使用する場合は、UIの操作を制限するか、プレイヤーの動きを制限しておかないと、予期せぬ動作の元となってしまいます。