我找不到如何不断根据英雄的身高和身高动态地在3个摄像机(我称它们为“中,上,下”)之间动态融合的方法。
当跟随英雄时,中间的vCam是主要/基础的,我想根据英雄的高度按比例混合上下vCam。
播放器/英雄可以在不同高度之间快速移动,因此应轻松地对混合进行加权。这是Cinemachine混合的自然组成部分。和工程。但是,就我目前对Cinemachine混合的了解而言,这就像一个开关,而不是基于高度的恒定动态混合。
答案 0 :(得分:4)
您可以考虑卸下上,下摄像机,并仅对中摄像机进行“手动混合”。最近,我一直在使用Cinemachine,并且所做的事情与您期望的结果类似。
由于我不完全了解您希望相机如何表现,因此向您展示了我完成的一些手动混合,并解释说:
//Camera Direction
//If I´m not in ground, and I've been on the air for a specific time
if (!onGround && timeSinceLastJump > cameraDelay)
{
//Moves the offset of the camera down to the maximum allowed y offset (In your case it would be where the lower camera is)
if (vcam.GetCinemachineComponent<CinemachineTransposer>().m_FollowOffset.y >= maxYOffset)
vcam.GetCinemachineComponent<CinemachineTransposer>().m_FollowOffset.y -= offsetYSensivity;
//It also zooms out up to a specified level
if (vcam.m_Lens.OrthographicSize < maxFOV)
vcam.m_Lens.OrthographicSize += camSensivity;
}
else
{
//Same but upwards
if (vcam.GetCinemachineComponent<CinemachineTransposer>().m_FollowOffset.y <= minYOffset)
vcam.GetCinemachineComponent<CinemachineTransposer>().m_FollowOffset.y += offsetYSensivity;
//Same but zooming in
if (vcam.m_Lens.OrthographicSize > minFOV)
vcam.m_Lens.OrthographicSize -= camSensivity;
}
通过这种方法,您可以在一定条件下使用播放器的高度,但必须精心设计摄像头逻辑。
也许这可以以某种方式帮助您完成自己想要的事情。
答案 1 :(得分:-1)
根据我记得,您可以在Cinemachine混合选项中定义混合样式。根据描述,当您可能想要类似于EaseIn / EaseOut的内容时,似乎将其设置为“剪切”。如果默认选项对您不起作用,它甚至允许您在摄像机之间定义自己的自定义混合。
查看documentation了解更多详细信息。