Unity3D鼠标控制摄像机“左右移动控制视角+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)); } } }

鼠标移动视角

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

 

posted @ 2020-03-24 10:30  Tomorrow1126  阅读(2456)  评论(0编辑  收藏  举报