Unity Android相机权限管理:控制摄像头

在第三人称游戏开发中,因为我们的人物是会不断移动的,所以我们的相机需要保持合适的角度跟随我们的人物进行移动,最简单的一种实现方法是先在unity场景中将摄像机调整到合适的位置,然后将它放到我们的人物下面,让他成为人物的子物体,这样做也可以达到摄像机跟随的目的。如果对摄像机跟随的要求不高的话可以临时采用这种方法


我们的摄像机的旋转分别是围绕leftandright的Y轴,Upanddown的Z轴,以及conter的正方向进行移动的),leftandright始终与人物坐标保持一致脚本如下是挂在leftangright上的,采用的是单例模式

unity Android 相机权限 unity相机控制_编写代码

登录后复制


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
    //1,知道自己要做什么
    //2,用什么API可以实现功能
    //3,写出来,验证,改错
public class CamerControl : MonoBehaviour {

    public static CamerControl instance;
    void Awake()
    {
        instance = this;
    }
    [SerializeField]
    private Transform Upanddown;
    [SerializeField]
    private Transform Zoomconter;
    [SerializeField]
    private Transform conter;

    //控制视野左右移动的方法
    public void SetRotate(int type)
    {
        transform.Rotate(0,Time.deltaTime*(type==1?1:-1)*30,0);
      
    }
    //控制视野上下移动的方法
    public void SetUp(int type)
    {
        Upanddown.Rotate(0,0,Time.deltaTime*(type==1?1:-1)*30);
        //Upanddown.transform.localEulerAngles = new Vector3(0, 0, Mathf.Clamp(Upanddown.transform.localEulerAngles.z,-90f,0f));
    }
    //控制视野远近的方法
    public void SetScale(int type)
    {
        conter.Translate(Vector3.forward*(type==1?1:-1));
    }
}

 之后在人物控制脚本的Update函数中调用CameraFllow函数

登录后复制


//控制摄像机移动的方法
    void CameraFllow()
    {
        if (CamerControl.instance == null) return;
        CamerControl.instance.transform.position = transform.position;
        if (Input.GetKey(KeyCode.A))
        {
            CamerControl.instance.SetRotate(1);
        }
        else if (Input.GetKey(KeyCode.D))
        {
            CamerControl.instance.SetRotate(-1);
        }
        if (Input.GetKey(KeyCode.W))
        {
            CamerControl.instance.SetUp(-1);
        }
        else if (Input.GetKey(KeyCode.S))
        {
            CamerControl.instance.SetUp(1);
        }
        if (Input.GetAxis("Mouse ScrollWheel")>0)
        {
            CamerControl.instance.SetScale(1);
        }
        else if (Input.GetAxis("Mouse ScrollWheel")<0)
        {
            CamerControl.instance.SetScale(-1);
        }
    }
    
    

   

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空