Unity Camera循环变化代码

本文分享了一段Unity脚本代码,实现通过按下C键在第一人称、左侧面和顶视图三个摄像机视角之间的循环切换。代码详细定义了摄像机相对于玩家位置的偏移,并在每帧更新中检查按键输入,实现摄像机的动态切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己琢磨的一个按C键摄像机变化代码程序,如下:

public class Cameras : MonoBehaviour
{
    //定义3个摄像机相对于Player的Vector3变量
    private Vector3 mainCameraOffset = new Vector3(0, 4, -6.5f);
    private Vector3 leftCameraOffset = new Vector3(-1.7f, 0.9f, 0);
    private Vector3 topCameraOffset = new Vector3(0, 300, 0);

    public GameObject player;
    public Camera[] cameras;
    public int cameraIndex = 0;


    // Start is called before the first frame update
    void Start()
    {
        player = GameObject.Find("Player");

        //设置0号摄像机可用,其他不可用
        cameras[cameraIndex].enabled = true;
        for (cameraIndex += 1; cameraIndex < cameras.Length; cameraIndex++) 
        {
            cameras[cameraIndex].enabled = false;
        }
        cameraIndex = 0;
    }

    // Update is called once per frame
    void Update() 
    {
        //如果按下C键,cameraIndex自增
        if (Input.GetKeyDown(KeyCode.C)) 
        {
            cameraIndex++;
            //如果cameraIndex为最后一个摄像机索引,则循环到0号摄像机
            if (cameraIndex == cameras.Length)
            {
                cameraIndex = 0;
                cameras[cameras.Length - 1].enabled = false;
            }
            //按下C键下一个摄像机设置为可用
            cameras[cameraIndex].enabled = true;
            //如果cameraIndex不为0,则设置上一个摄像机不可用
            if (cameraIndex != 0) 
            {
                cameras[cameraIndex - 1].enabled = false;
            }
        }
    }

    void LateUpdate()
    {
        //按照不同的摄像机设置相对于Player的位置
        switch (cameraIndex) 
        {
            case 0: 
                Camera.main.transform.position = player.transform.position + mainCameraOffset;
                break;
            case 1:
                Camera.main.transform.position = player.transform.position + leftCameraOffset;
                break;
            case 2:
                Camera.main.transform.position = player.transform.position + topCameraOffset;
                break;
            default:
                break;
        }
    }
}

其中Sence需创建一个Empty Gameobject为CameraManager,如图:

同时所有的Camera tag需设置为"MainCamera",同默认的MainCamera一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值