facebook twitter hatena line email

「Unity/Cinemachine/複数ターゲット」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(2つが離れすぎるで画面範囲に入らないとき)
(スクリプトでaimの値を変更)
 
(同じ利用者による、間の4版が非表示)
行1: 行1:
  
 
==複数ターゲットを同時にカメラ内に==
 
==複数ターゲットを同時にカメラ内に==
*新しいGameObjectを作り、"TargetGroup"とし、CinemachineTargetGroupを追加し、3Dのターゲットを追加
+
*新しいGameObjectを作り、"TargetGroup"に名前変更し、CinemachineTargetGroupをAddComponentし、3Dのターゲットを追加
 
*CinemachineVirtualCameraのLookAtに、TargetGroupオブジェクトを、追加する
 
*CinemachineVirtualCameraのLookAtに、TargetGroupオブジェクトを、追加する
 
*CinemachineVirtualCameraのFollowはnoneにしておく。
 
*CinemachineVirtualCameraのFollowはnoneにしておく。
行21: 行21:
 
</pre>
 
</pre>
 
参考:https://nekojara.city/unity-cinemachine-group-composer
 
参考:https://nekojara.city/unity-cinemachine-group-composer
 +
 +
==動的に増やす場合===
 +
<pre>
 +
targetGroup.AddMember(targetObj.transform, 1, 1);
 +
</pre>
 +
参考:https://note.com/piku_model/n/n9d7b40db8018
  
 
==2つが離れすぎるで画面範囲に入らないとき==
 
==2つが離れすぎるで画面範囲に入らないとき==
行29: 行35:
 
MaximamDistanceの値を変更
 
MaximamDistanceの値を変更
 
<pre>
 
<pre>
 +
// GroupComposerの場合
 
cinemachineVirtualCamera.GetCinemachineComponent(CinemachineCore.Stage.Aim).GetComponent<CinemachineGroupComposer>().m_MaximumFOV = 179;
 
cinemachineVirtualCamera.GetCinemachineComponent(CinemachineCore.Stage.Aim).GetComponent<CinemachineGroupComposer>().m_MaximumFOV = 179;
 +
 +
// Composerの場合
 +
cinemachineVirtualCamera.GetCinemachineComponent(CinemachineCore.Stage.Aim).GetComponent<CinemachineComposer>().m_MaximumFOV = 179;
 
</pre>
 
</pre>
 
参考:https://nazenavi.com/2021/06/10/unitycinemachinevirtualcamerapov/
 
参考:https://nazenavi.com/2021/06/10/unitycinemachinevirtualcamerapov/
 +
 +
公式:https://docs.unity3d.com/Packages/com.unity.cinemachine@2.1/manual/index.html

2023年10月7日 (土) 19:25時点における最新版

複数ターゲットを同時にカメラ内に

  • 新しいGameObjectを作り、"TargetGroup"に名前変更し、CinemachineTargetGroupをAddComponentし、3Dのターゲットを追加
  • CinemachineVirtualCameraのLookAtに、TargetGroupオブジェクトを、追加する
  • CinemachineVirtualCameraのFollowはnoneにしておく。

参考:https://light11.hatenadiary.com/entry/2019/07/22/204953

複数ターゲットの変更をscriptで

CinemachineTargetGroup targetGroup;
targetGroup.m_Targets = new CinemachineTargetGroup.Target[]
        {
            new CinemachineTargetGroup.Target
            {
                target = playControllView.enemyGroup.transform.Find("Enemy" + enemyNum),
                weight = 1,
                radius = 1,
            },
        };

参考:https://nekojara.city/unity-cinemachine-group-composer

動的に増やす場合=

targetGroup.AddMember(targetObj.transform, 1, 1);

参考:https://note.com/piku_model/n/n9d7b40db8018

2つが離れすぎるで画面範囲に入らないとき

  1. AimをComposerからGroupComposerに
  2. AImのMaximamDistanceを大きく

スクリプトでaimの値を変更

MaximamDistanceの値を変更

// GroupComposerの場合
cinemachineVirtualCamera.GetCinemachineComponent(CinemachineCore.Stage.Aim).GetComponent<CinemachineGroupComposer>().m_MaximumFOV = 179;

// Composerの場合
cinemachineVirtualCamera.GetCinemachineComponent(CinemachineCore.Stage.Aim).GetComponent<CinemachineComposer>().m_MaximumFOV = 179;

参考:https://nazenavi.com/2021/06/10/unitycinemachinevirtualcamerapov/

公式:https://docs.unity3d.com/Packages/com.unity.cinemachine@2.1/manual/index.html