VKC Item Camera
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コンポーネントをアタッチしてシーン上に配置します。
なお、本オブジェクトはVKCItemFieldとは別個のアイテムとして扱われるため、Worldオブジェクトの外に置かれても問題ございません。
2. HeliScriptを書く
VKC Item Cameraをアタッチした空オブジェクトはアイテムとして出力されます。 そのため、SetPosやSetQuaternionといったアイテムクラス用の関数を使用することができるほか、Camera専用の関数も使用することが可能です。
Camera専用の関数
-
bool SetCamera()
現在の映像を映すカメラを該当のカメラアイテムにします。
成功したらtrue、失敗したらfalseが返ってきます。 -
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を入れており、クリックするたびカメラが切り替わるように実装されています。
その他知見
イベントカメラには下記の特徴があります。
- プレイヤーの操作はカメラの影響を受ける
- 一人称視点にするとプレイヤーはカメラの位置にワープする
したがって、イベントカメラを使用する場合は、UIの操作を制限するか、プレイヤーの動きを制限しておかないと、予期せぬ動作の元となってしまいます。