Unity3D 鼠标控制摄像头 "左右移动控制视角+WASD键盘控制前方/右方+空格键提升高度 "脚本
最编程
2024-07-01 12:38:00
...
//键盘控制
using UnityEngine; using System.Collections; public class CameraControl : MonoBehaviour { // Use this for initialization private GameObject gameObject; float x1; float x2; float x3; float x4; void Start () { gameObject = GameObject.Find ("Main Camera"); } // 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)); } } }
鼠标移动视角
using UnityEngine; using System.Collections; [AddComponentMenu("Camera-Control/Mouse Look")] public class MouseLook : MonoBehaviour { 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; void Update () { 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); } } void Start () { // Make the rigid body not change rotation if (GetComponent<Rigidbody>()) GetComponent<Rigidbody>().freezeRotation = true; } }