首页 > 解决方案 > Unity中汽车选择菜单的平滑相机移动

问题描述

我想为我的游戏制作一个汽车选择屏幕。我可以用鼠标在我的车周围移动相机。仅当我按住鼠标按钮时,相机才会移动。当我释放鼠标按钮时,相机立即停止。但我想慢慢停下相机。我不想使用 Cinemachine。那么,如何在松开鼠标按钮时缓慢停止相机?这是我目前使用的代码:

public class MenuCameraMovement : MonoBehaviour

public Transform car;
private float sensitivity = 2f;

private void Update()
{
    if (Input.GetMouseButton(0))
    {
        float rotateHorizontal = Input.GetAxis("Mouse X");
        float rotateVertical = Input.GetAxis("Mouse Y");

        //For rotating
        transform.RotateAround(car.transform.position, Vector3.up, rotateHorizontal * sensitivity);

        //No need vertical rotation
        //transform.RotateAround(Vector3.zero, transform.right, rotateVertical * sensitivity);

    }
}

标签: c#unity3d

解决方案


我会尝试类似(未调试):

using UnityEngine;

public class MenuCameraMovement : MonoBehaviour
{
    public Transform car;
    private float sensitivity = 2f;
    private bool movementStarted;

    private float sesitivityDecrease = 100f; // 100 is random. Play with it until it is ok

    private void Update() {
        if (Input.GetMouseButton(0)) {
            movementStarted = true;
            float rotateHorizontal = Input.GetAxis("Mouse X");
            float rotateVertical = Input.GetAxis("Mouse Y");

            //For rotating
            transform.RotateAround(car.transform.position, Vector3.up, rotateHorizontal * sensitivity);

            //No need vertical rotation
            //transform.RotateAround(Vector3.zero, transform.right, rotateVertical * sensitivity);

        } else {
            if (movementStarted) {
                if (sesitivityDecrease > 0) {
                    transform.RotateAround(car.transform.position, Vector3.up, sesitivityDecrease);
                    sesitivityDecrease--;
                } else {
                    movementStarted = false;
                    sesitivityDecrease = 100;
                }
            }
        }
    }
}

你可以用这个值来玩,sesitivityDecrease直到你想要的效果是正确的。

另一种方法是使用协程来完成


推荐阅读