1

如何通过 ImpulseSource 正确调用 GenerateImpulse() 来实现 Cinemachine 的相机 ImpulseListener(相机抖动)?如果我在播放器上放置一个 CollisionImpuleSource,我可以让它工作,但我不希望这样。我想使用脉冲源,然后用代码确定何时摇动。

我正在查看文档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>();

}

我得到一个错误..

“Cinemachine.CinemachineImpulseSource”类型必须可转换为“Cinemachine.CinemachineComponentBase”,以便在通用方法“T Cinemachine.CinemachineVirtualCamera.GetCinemachineComponent()”中将其用作参数“T”

但如果我也改变私人..

private CinemachineComponentBase  _impulseSource;

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

4

1 回答 1

2

将其CinemachineImpulseSource视为自定义 GameObject 上的组件。

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

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

...

ImpulseSource.GenerateImpulse();
于 2020-07-31T06:48:04.807 回答