Unity Third Person CameraController

void CameraMovement()
    {
        if (currentTarget == null)
            return;
        /*defaultDistance是2.5f,随着不断刷新,
        distance会逐渐接近defaultDistance,实现鼠标缓慢跟随鼠标的效果*/
        distance = Mathf.Lerp(distance, defaultDistance, smoothFollow * Time.deltaTime);
        /*剔除的距离,0*/
        cullingDistance = Mathf.Lerp(cullingDistance, distance, Time.deltaTime);
        /*计算相机的方向,再标准化,targetLookAt只是中间变量,和currentTarget一致*/
        var camDir = (forward * targetLookAt.forward) + (rightOffset * targetLookAt.right);

        camDir = camDir.normalized;

        /*根据currentTarget的当前中心点的位置,但好像是0,有点问题*/
        var targetPos = new Vector3(currentTarget.position.x, currentTarget.position.y + offSetPlayerPivot, currentTarget.position.z);
        Debug.Log("offSetPlayerPivot"+offSetPlayerPivot);

        
        currentTargetPos = targetPos;
        /*height = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity CameraController可以做成接口来扩展和定制化。接口是一种抽象的数据类型,它定义了一组方法和属性,其他类可以实现这个接口,以实现特定功能。 首先,我们可以定义一个名为ICameraController的接口,包含控制相机的方法和属性。这个接口可以包括以下方法: - `void RotateCamera(Vector3 rotation)`:旋转相机的方法,通过传入一个旋转向量来改变相机的方向。 - `void ZoomCamera(float zoomAmount)`:缩放相机的方法,通过传入缩放因子来改变相机的视野。 - `void PanCamera(Vector3 panOffset)`:平移相机的方法,通过传入一个平移向量来改变相机的位置。 - `void FollowTarget(Transform target)`:跟随目标物体的方法,使相机始终跟随目标物体移动。 除了以上方法,接口还可以包含一些属性,比如相机的当前位置、旋转角度等等。这些属性可以通过接口来访问和修改相机的状态。 其他类例如MouseCameraController和KeyboardCameraController可以实现ICameraController接口,分别处理鼠标和键盘输入来控制相机的行为。这样,我们可以根据需求选择不同的CameraController实现类来实现不同的控制方式。 通过将CameraController做成接口,我们可以最大程度地提高代码的灵活性和可扩展性。可以方便地扩展和添加新的控制方式,也可以轻松替换现有的控制方式。这样,开发者可以根据需求自由定制和扩展相机控制行为,实现更多的交互和视觉效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值