void Update() { if (Input.GetKey(KeyCode.H)) // Lock the cursor inside gameview Screen.lockCursor = true; // Hide mouse cursor Screen.showCursor = false; if(Input.GetKey(KeyCode.U)) // Lock the cursor inside gameview Screen.lockCursor = false; //Show mouse cursor Screen.showCursor = true; }
using UnityEngine; using System.Collections; public class ViewpointSwitch : MonoBehaviour { //从场景中拖入的object public GameObject Obj_3rd; public GameObject cam_3rd; public GameObject gobj_3rd; public GameObject Obj_1fs; public GameObject cam_1fs; public GameObject gobj_1fs; //记录刚进入第一人称视角时候的欧拉角和离开第一视角时候的欧拉角(Y方向) float pre1fsAngle = 0; float cur1fsAngle = 0; // Update is called once per frame void Update () { //切换至第一人称视角 if (Input.GetKey(KeyCode.F1)) { //记录一开始 //pre1fsAngle = cam_1fs.transform.eulerAngles.y; pre1fsAngle = cam_3rd.transform.eulerAngles.y; //记录的第一人称(这里取的是第三人称,其实是一样的)一开始的y方向欧拉角,这里没用上面注释掉的写法是防止重复按f1键切换然后覆盖初始值导致旋转角度差值缩小 if (!Obj_1fs.activeSelf) { Obj_1fs.SetActive(true); GameObject.Find("Main Character Controller").transform.localPosition = GameObject.Find("3rd Person Controller").transform.localPosition; GameObject.Find("Main Character Controller").transform.localRotation = GameObject.Find("3rd Person Controller").transform.localRotation; Obj_3rd.SetActive(false); } } //切换至第三人称视角 if (Input.GetKey(KeyCode.F2)) { cur1fsAngle = cam_1fs.transform.eulerAngles.y; //记录 if (!Obj_3rd.activeSelf) { Obj_3rd.SetActive(true); GameObject.Find("3rd Person Controller").transform.localPosition = GameObject.Find("Main Character Controller").transform.localPosition; //注意这里Mathf里面的方法是幅度,我这里就进行了一个角度转幅度的计算:幅度=角度*pi/180 float angle = (cur1fsAngle - pre1fsAngle) * Mathf.PI / 180; gobj_3rd.GetComponent<ThirdPersonController>().v = Mathf.Cos(angle); gobj_3rd.GetComponent<ThirdPersonController>().h = Mathf.Sin(angle); print("旋转角度:" + (cur1fsAngle-pre1fsAngle)); gobj_3rd.GetComponent<ThirdPersonController>().flag = true; //这个flag标志是让ThirdPersonController的update方法执行改变上面的v,h一次,然后第二帧的时候就执行v=Input.GetAxisRaw("Vertical")和h=Input.GetAxisRaw("Horizontal") Obj_1fs.SetActive(false); } } } }
http://ueige123.oicp.net/dingxiaowei/13viewpointswitch/13viewpointswitch.html
==================== 迂者 丁小未 CSDN博客专栏=================
MyBlog:http://blog.csdn.net/dingxiaowei2013 MyQQ:1213250243
Unity QQ群:858550 cocos2dx QQ群:280818155
====================== 相互学习,共同进步 ===================
转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/18281261
欢迎关注我的微博:http://weibo.com/u/2590571922
需要工程文件的请留言!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。