博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【小松教你手游开发】【unity实用技能】控制摄像头脚本
阅读量:6698 次
发布时间:2019-06-25

本文共 2660 字,大约阅读时间需要 8 分钟。

测试项目的时候经常用到的控制摄像头运动,简单的移动转向

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Controller : MonoBehaviour {    private GameObject gameObject;    float x1;    float x2;    float x3;    float x4;    void Start()    {        gameObject = GameObject.Find("Main Camera");        // Make the rigid body not change rotation          if (GetComponent
()) GetComponent
().freezeRotation = true; } // Update is called once per frame void Update() { //空格键抬升高度 if (Input.GetKey(KeyCode.Space)) { transform.position = new Vector3(transform.position.x, transform.position.y + 1, transform.position.z); } //w键前进 if (Input.GetKey(KeyCode.W)) { this.gameObject.transform.Translate(new Vector3(0, 0, 50 * Time.deltaTime)); } //s键后退 if (Input.GetKey(KeyCode.S)) { this.gameObject.transform.Translate(new Vector3(0, 0, -50 * Time.deltaTime)); } //a键后退 if (Input.GetKey(KeyCode.A)) { this.gameObject.transform.Translate(new Vector3(-10, 0, 0 * Time.deltaTime)); } //d键后退 if (Input.GetKey(KeyCode.D)) { this.gameObject.transform.Translate(new Vector3(10, 0, 0 * Time.deltaTime)); } if(Input.GetKey(KeyCode.Mouse0)) { if (axes == RotationAxes.MouseXAndY) { float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = Mathf.Clamp(rotationY, minimumY, maximumY); transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); } else if (axes == RotationAxes.MouseX) { transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0); } else { rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = Mathf.Clamp(rotationY, minimumY, maximumY); transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0); } } } public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } public RotationAxes axes = RotationAxes.MouseXAndY; public float sensitivityX = 15F; public float sensitivityY = 15F; public float minimumX = -360F; public float maximumX = 360F; public float minimumY = -60F; public float maximumY = 60F; float rotationY = 0F;}

转载于:https://blog.51cto.com/13638120/2084937

你可能感兴趣的文章
编译hibernate源代码
查看>>
Surface Pro 3 扩展坞体验
查看>>
MySQL 源码系列:1:窥探篇
查看>>
Codeforces Round #288 (Div. 2)D. Tanya and Password 欧拉通路
查看>>
repo总结
查看>>
pm2 安装使用
查看>>
2015必须推荐的Android框架,猿必读系列!
查看>>
书单:数学、物理类的「闲书」
查看>>
unity, stateMachine, change state name
查看>>
Java并发教程(Oracle官方资料)
查看>>
Erlang入门(四)——错误处理和鲁棒性
查看>>
Shell变量替换,命令替换,转义字符
查看>>
获取MSSQL Server中的相关信息(视图、存储过程、触发器、表)
查看>>
信号处理过程中的几种常见傅里叶相关的变换
查看>>
http请求
查看>>
客户资料查询传递数据格式
查看>>
C#开发之反射的简单使用
查看>>
[原创] Win7全自动精简批处理_绝对原创,绝对给力_感谢无忧给了我一年的潜水...
查看>>
2017 年热门编程语言排行榜,你的语言上榜没?
查看>>
poi 合并单元格、设置边框
查看>>