【问题标题】:Unity3D - Cinemachine - Camera rotating issueUnity3D - Cinemachine - 相机旋转问题
【发布时间】:2021-06-18 15:47:55
【问题描述】:

我的问题是我的相机在停止鼠标旋转后旋转了一点。

我使用 Cinemachine 虚拟摄像机。 角色随镜头转动。

脚本不是来自我,但它适用于制作者。 该脚本来自以下播放列表。

https://www.youtube.com/watch?v=CS7MudfyDzM&list=PLyBYG1JGBcd1E4CigRSDE9YdH8syiDY6-

script on character

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterAiming : MonoBehaviour
{

    public float turnSpeed;
    Camera mainCamera;
    
    public Transform cameraLookAt;
    public Cinemachine.AxisState xAxis;
    public Cinemachine.AxisState yAxis;

    // Start is called before the first frame update
    void Start()
    {
        mainCamera = Camera.main;
        Cursor.visible = false;
        Cursor.lockState = CursorLockMode.Locked;
    }

    void FixedUpdate()
    {
        xAxis.Update(Time.fixedDeltaTime);
        yAxis.Update(Time.fixedDeltaTime);

        cameraLookAt.eulerAngles = new Vector3(yAxis.Value, xAxis.Value, 0);

        float yawCamera = mainCamera.transform.rotation.eulerAngles.y;
        transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, yawCamera, 0), turnSpeed * Time.fixedDeltaTime);
        Debug.Log(Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, yawCamera, 0), turnSpeed * Time.fixedDeltaTime));
    }

}

【问题讨论】:

    标签: c# unity3d cinemachine


    【解决方案1】:

    好的,我修好了。 移行cameraLookAt.eulerAngles = new Vector3(yAxis.Value, xAxis.Value, 0); 到函数结束。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CharacterAiming : MonoBehaviour
    {
    
        public float turnSpeed;
        Camera mainCamera;
        
        public Transform cameraLookAt;
        public Cinemachine.AxisState xAxis;
        public Cinemachine.AxisState yAxis;
    
        // Start is called before the first frame update
        void Start()
        {
            mainCamera = Camera.main;
            Cursor.visible = false;
            Cursor.lockState = CursorLockMode.Locked;
        }
    
        void FixedUpdate()
        {
            xAxis.Update(Time.fixedDeltaTime);
            yAxis.Update(Time.fixedDeltaTime);
    
            float yawCamera = mainCamera.transform.rotation.eulerAngles.y;
            transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, yawCamera, 0), turnSpeed * Time.fixedDeltaTime);
            
            cameraLookAt.eulerAngles = new Vector3(yAxis.Value, xAxis.Value, 0);
        }
    
    }

    【讨论】:

      猜你喜欢
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多