質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1654閲覧

CinemachineのLookat切り替えをスムーズに行いたい

RedRabbit

総合スコア28

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

2クリップ

投稿2019/01/12 02:08

Cinemachineを使用してカメラの向きを変更する際に
以下のコードを書きました。


private CinemachineVirtualCamera vCamera;
private Transform nextTarget;

//カメラの対象を変更する
vCamera.LookAt = nextTarget;

この時、現在LookAtで対象としているオブジェクトから
nextTargetへの切り替えの際に一瞬で切り替わります。

cinemachineのAim等の値を変更してスムーズにならないか試してみたのですが、
値の設定がいまいちわかりません。

ご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Cinemachine Virtual Camera Switch target at runtime in virtual camera, its causing jerk? - Unity Forumに寄せられた回答によれば、そういう仕様になっているとのことです。
なめらかに遷移させるには、各対象ごとにそれぞれバーチャルカメラを作って、注目対象を変える際にはアクティブなカメラを切り替える(または優先度を変更する)ことになりそうでした。

LookAt差し替えだと、確かにおっしゃる通り急に映像が切り替わってしまいますが...

LookAt

アクティブなバーチャルカメラを切り替えるやり方だと、なめらかに遷移しました。

enabled

ご参考までに、図中のボタンには下記のようなスクリプトを付けており、またメインカメラの「Cinemachine Brain」の「Default Blend」は0.5秒にしています。

C#

1using System.Linq; 2using Cinemachine; 3using UnityEngine; 4using UnityEngine.UI; 5 6[RequireComponent(typeof(Button))] 7public class LookTargetSelector : MonoBehaviour 8{ 9 public Transform Target; 10 private CinemachineVirtualCamera[] virtualCameras; 11 12 private void Awake() 13 { 14 this.virtualCameras = FindObjectsOfType<CinemachineVirtualCamera>(); 15 var button = this.GetComponent<Button>(); 16 var text = button.transform.Find("Text").GetComponent<Text>(); 17 button.onClick.AddListener(this.SwitchTarget); 18 text.text = this.Target.name.Split('_').Last(); 19 } 20 21 private void SwitchTarget() 22 { 23 Debug.Log($"Target:{this.Target.name}"); 24 // あらかじめ、LookAt部位が異なる複数のCinemachineVirtualCameraを作っておき 25 // 注目部位用のカメラだけをアクティブに、他は非アクティブにする 26 foreach (var virtualCamera in this.virtualCameras) 27 { 28 virtualCamera.enabled = virtualCamera.LookAt == this.Target; 29 } 30 } 31}

投稿2019/01/12 10:47

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RedRabbit

2019/01/14 07:23

仕様でしたか・・教えて下さりありがとうございます。 切り替えを多くのオブジェクトで行う予定だったので、オブジェクト分カメラを用意するのは難しいと思いました。 カメラを2つ用意しておいて、LookAtを切り替えてからカメラを切り替えるという手順で実現できそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問