相机统一性问题

时间:2020-05-16 10:06:21

标签: c# unity3d

嗨, 我最近遇到了一个问题,我想添加使用第三人称视角使用角色相机进行侧面查看的可能性,但是在引入它之后,似乎其余代码似乎都被忽略了,就像可以删除开始代码一样其余的仍在工作,尽管我认为不应该。可能有点混乱,但是有人知道出什么问题吗?

using JetBrains.Annotations;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Camera : MonoBehaviour
{

    public Transform ObjectToTrack;
    public Vector3 delta;


    void FixedUpdate()
    {
        transform.LookAt(ObjectToTrack);

        var trackedRigidbody = ObjectToTrack.GetComponent<Rigidbody>();
        var speed = trackedRigidbody.velocity.magnitude;

        var targetPosition = ObjectToTrack.position + delta * (speed / 20f + 1f);

        transform.position = Vector3.Lerp(transform.position, targetPosition, Time.smoothDeltaTime * 3f);

    }


    float cameraAngle = 0f;
    void Update()
    {

        if (Input.GetKey(KeyCode.Mouse0)) cameraAngle += Input.GetAxis("Mouse X");
        var quaternionX = Quaternion.Euler(0, cameraAngle, 0);




        var positionX = ObjectToTrack.position
            + quaternionX * delta;




        transform.position = positionX;



        transform.LookAt(ObjectToTrack);
        transform.rotation *= Quaternion.Euler(-30f, 0, 0);


    }




}

1 个答案:

答案 0 :(得分:0)

更新称为after固定更新,因此您要先设置位置然后覆盖它。

我建议更改此行

var positionX = ObjectToTrack.position + quaternionX * delta;

收件人

var positionX = transform.position + quaternionX * delta;

或者,更简而言之

transform.position += quaternionX * delta;