微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在 Unity 中进行一个小型实验项目,我想锁定一个敌人。通过使用 Cinemachine Free Look 相机,我的相机的行为类似于 Dark Souls 相机。现在我希望能够点击一个按钮并锁定敌人,类似于黑暗之魂相机的工作方式,显示this video 中。我还制作了一张图片来解释我在寻找什么。我希望玩家和敌人在锁定时都在屏幕的垂直中心,但我希望相机跟随玩家,同时基本上围绕敌人旋转。

我曾尝试将玩家和敌人都添加到目标组中,但它的行为与我想要的不一样。当然,它同时查看玩家和敌人,但它并没有像我试图在图像和视频中展示的那样让他们保持一致。

Image describing the goal

解决方法

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

Illustation

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

Quick mock

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;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。