Unity3D Cinemachine - 如何锁定敌人的黑暗之魂风格?

Mar*_*zén 2 unity-game-engine cinemachine

我正在 Unity 中开展一个小型实验项目,我想锁定一个敌人。我的相机的行为类似于《黑暗之魂》相机,使用 Cinemachine Free Look 相机。现在我希望能够单击一个按钮,然后锁定敌人,类似于本视频中显示的《黑暗之魂》相机的工作原理。我还制作了一张图片来解释我正在寻找的内容。我希望玩家和敌人在锁定时都位于屏幕的垂直中心,但我希望摄像机跟随玩家,同时基本上围绕敌人旋转。

我尝试将玩家和敌人都添加到目标组中,但它的行为并不符合我想要的方式。当然,它会同时观察玩家和敌人,但不会像我试图在图像和视频中展示的那样使它们保持对齐。

描述目标的图片

Pet*_*ete 5

对我来说,在视频中,相机看起来像是围绕固定在播放器上的枢轴点(绿色)放置的。然后相机指向玩家和所选敌人之间的确切中间位置(橙色点)。敌人跳跃时看起来也有最大角度。

插图

使用我编写的代码快速证明概念。然而,代码实际上只是一个概念证明:

快速模拟

public class CameraScript : MonoBehaviour
{
    public Transform enemy;
    public Transform player;
    public float cameraSlack;
    public float cameraDistance;

    private Vector3 pivotPoint;

    void Start()
    {
        pivotPoint = transform.position;
    }

    void Update()
    {
        Vector3 current = pivotPoint;
        Vector3 target = player.transform.position + Vector3.up;
        pivotPoint = Vector3.MoveTowards(current, target, Vector3.Distance(current, target) * cameraSlack);

        transform.position = pivotPoint;
        transform.LookAt((enemy.position + player.position) / 2);
        transform.position -= transform.forward * cameraDistance;
    }
}
Run Code Online (Sandbox Code Playgroud)