如何在不使用 Collision 的情况下关闭 Cinemachine Impulse 源?

How do you fire off the Cinemachine Impulse source without using the Collision one?

如何通过ImpulseSource正确调用GenerateImpulse()来实现Cinemachine的camera ImpulseListener(camera shake)?如果我将 CollisionImpuleSource 放在播放器上,我可以让它工作,但我不想那样。我想用Impulse Source,然后用代码,确定什么时候摇。

我正在查看文档 https://docs.unity3d.com/Packages/com.unity.cinemachine@2.3/manual/CinemachineImpulseSource.html,但没有看到如何正确地启动 ImpulseSource。

我设置了私人...

public CinemachineVirtualCamera vCamera;
private CinemachineImpulseSource  _impulseSource;

我可以调用 generateImpulse...

_impulseSource.GenerateImpulse();

但我不知道如何获取组件

private void Start(){

_impulseSource = vCamera.GetCinemachineComponent<CinemachineImpulseSource>();

}

我收到一个错误..

The type 'Cinemachine.CinemachineImpulseSource' must be convertible to 'Cinemachine.CinemachineComponentBase' in order to use it as parameter 'T' in the generic method 'T Cinemachine.CinemachineVirtualCamera.GetCinemachineComponent()'

但如果我也改变私人..

private CinemachineComponentBase  _impulseSource;

这没有帮助。需要一些关于如何引用它的指导。

CinemachineImpulseSource 视为自定义游戏对象上的一个组件。

CinemachineImpulseSource 脚本组件附加到新游戏对象。您可以将它添加到您的问题脚本所附的同一个 GO 中,但没有对此进行测试。 根据您的需要配置脉冲源组件并引用它。如果它在同一个游戏对象上,请创建一个 public 字段,就像您的相机参考一样,并在检查器中分配它 使用 GetComponent<CinemachineImpulseSource>() 获取它。然后你可以在上面调用GenerateImpulse()

public CinemachineVirtualCamera vCamera;
public CinemachineImpulseSource  ImpulseSource; // Assign in inspector

...

ImpulseSource.GenerateImpulse();