Unity3D鼠标控制摄像机“左右移动控制视角+WASD键盘控制前后左右+空格键抬升高度”脚本

C#控制WASD键盘前后左右及空格键抬升高度脚本代码如下:

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));
		}
	}
}

JS控制鼠标移动视角代码如下:

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())
			GetComponent().freezeRotation = true;
	}
}

你可能感兴趣的:(unity3D)