Unity垂直同步选项的一些注意点

1.这玩意关闭后,有可能导致鼠标指针移动摄像机视角的速度产生变化,比如在编辑器就可以,但打包出来后就视角移动过快或过慢。而只要它开着,就能保持一致。  同一个电脑上运行和打包,所以不存在帧数高低的问题。

下面上代码片段:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class PlayerCamaraManager : ReWriteGameControl_CF
{
    static PlayerCamaraManager instance;
    public static PlayerCamaraManager Instance
    {
        get { return instance; }
    }


    bool playerCanMove = false;
    CharacterController characterController;
    bool moving = false;
    Vector3 lastFrameMousePosition;
    Vector3 currentFrameMousePosition;
    Vector3 difference;
    float pcMoveSpeed = 1.0f;
    float phoneMoveSpeed = 1.0f;
    GraphicRaycaster _raycaster;
    bool canClosePanel=false;




    protected override void Awake()
    {
        base.Awake();
        if(instance==null)
        {
            instance = this;
        }
        characterController = GetComponent<CharacterController>();
    }


    void Update()
    {
        if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)
        {
            PlayerMove_PC();
        }
        else if (Application.platform == RuntimePlatform.Android)
        {
            PlayerMove_Android();
        }
    }

    private void PlayerMove_PC()
    {
        if (Input.GetKeyDown(KeyCode.Mouse1))
        {
            moving = true;
            currentFrameMousePosition = Input.mousePosition;
            lastFrameMousePosition = currentFrameMousePosition;
            if (moving && playerCanMove && !inputManager_CF.IsUI())
            {
                EventCenter.CallplayerStartMoveEvent();
            }
        }
        if (Input.GetKeyUp(KeyCode.Mouse1))
        {
            moving = false;
        }
        if (moving&&playerCanMove && !inputManager_CF.IsUI())
        {
            //设置当前帧鼠标指针位置
            currentFrameMousePosition = Input.mousePosition;
            //当前帧与上一帧的差乘上速度值再乘上每帧耗费的时间
            difference = (currentFrameMousePosition - lastFrameMousePosition) * pcMoveSpeed * Time.deltaTime ;
            Vector3 up = Vector3.forward * -1 * difference.y;
            Vector3 right = Vector3.right * -1 * difference.x;
            Vector3 destination = up + right;
            //player控制器移动特定的距离
            characterController.Move(destination);
            //设置上一帧鼠标指针位置
            lastFrameMousePosition = Input.mousePosition;
        }
    }
    private void PlayerMove_Android()
    {
        //判断单个手指的左右滑动方向
        if (Input.touchCount == 1)
        { 
            if (Input.touches[0].phase == TouchPhase.Began)
            {
                moving = true;
                canClosePanel = true;
                currentFrameMousePosition = Input.mousePosition;
                lastFrameMousePosition = currentFrameMousePosition;
            }
            if (Input.touches[0].phase == TouchPhase.Ended)
            {
                moving = false;
                canClosePanel = false;
            }
            if (Input.touches[0].phase == TouchPhase.Moved&& !inputManager_CF.IsUI())
            {
                if (moving && playerCanMove)
                {
                    currentFrameMousePosition = Input.mousePosition;
                    difference = (currentFrameMousePosition - lastFrameMousePosition) * phoneMoveSpeed * Time.deltaTime;
                    Vector3 up = Vector3.forward * -1 * difference.y;
                    Vector3 right = Vector3.right * -1 * difference.x;
                    Vector3 destination = up + right;
                    characterController.Move(destination);
                    lastFrameMousePosition = Input.mousePosition;
                    EventCenter.CallplayerStartMoveEvent();
                    if (canClosePanel)
                    {
                        canClosePanel = false;
                    }
                }
            }
        }
    }

    public void PlayerCanMove()
    {
        playerCanMove = true;
    }

    public void PlayerCanNotMove()
    {
        playerCanMove = false;
    }

猜你喜欢

转载自blog.csdn.net/qq_37760273/article/details/105733706