unity 第一人稱和第三人稱視角的切換

滑動屏幕旋轉(zhuǎn)攝像機(jī)

image.png

using UnityEngine;

public class CameraSwitch : MonoBehaviour
{
    private float lastPosX;
    private float lastPosY;
    public Transform CameraX;
    public Transform CameraY;
    private float RotaSpeed ;
    public float Speed = 100;
    private float range = 2;
    
    void Update()
    {
        RotaSpeed = Speed * Time.deltaTime;

        if (Input.GetMouseButton(1))
        {
            if (Input.mousePosition.x > lastPosX + range)
            {
                CameraX.Rotate(Vector3.up, RotaSpeed);
                lastPosX = Input.mousePosition.x;

            }
            else if (Input.mousePosition.x < lastPosX - range)
            {
                CameraX.Rotate(Vector3.up, -RotaSpeed);
                lastPosX = Input.mousePosition.x;
            }

            if (Input.mousePosition.y > lastPosY + range)
            {
                CameraY.Rotate(Vector3.right, -RotaSpeed);
                lastPosY = Input.mousePosition.y;

            }
            else if (Input.mousePosition.y < lastPosY - range)
            {
                CameraY.Rotate(Vector3.right, RotaSpeed);
                lastPosY = Input.mousePosition.y;
            }
        }
    }
}

第三視角相機(jī)跟隨

image.png

using UnityEngine;

public class CameraFollower : MonoBehaviour
{
    public Transform Target;
    public Transform Offset;
    private float mMoveSpeed=1f;
    private Vector3 offset;

    private void Start()
    {
        offset =  Target.position - Offset.position;
    }

    void Update()
    {

        transform.position = Vector3.Lerp(transform.position, Target.position-offset, Time.deltaTime * mMoveSpeed);
    }
    
}

視角互相切換

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

public class ViewCtrl : MonoBehaviour
{
    public Button ViewChangeBtn;
    private bool firstViewState=true;

    public Transform FirstCamera;
    public Transform ThirdCamera;

    public Transform Offset;
    private void Start()
    {
        ViewChangeBtn.onClick.AddListener(ChangeView);

        FirstCamera.gameObject.SetActive(firstViewState);
        ThirdCamera.gameObject.SetActive(!firstViewState);
    }

    private void ChangeView()
    {
        firstViewState = !firstViewState;
        FirstCamera.gameObject.SetActive(firstViewState);
        if(!firstViewState)
        {
            ThirdCamera.position = Offset.position;
        }
        ThirdCamera.gameObject.SetActive(!firstViewState);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容