unity 鼠标控制第一人称视角及键盘控制移动升级版
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Collections.Generic;
using UnityEngine;
public class move1 : MonoBehaviour {
public Rigidbody rigidbody;
public Transform cameraTF;
public float speed = 5f;
public float rotateSpeed = 5f;
public float maxRotate, minRotate;//限制角度
public float rotateHead;//相机方向
public float headSpeed;//相机移动速度
public Transform cameraTF;
public float speed = 5f;
public float rotateSpeed = 5f;
public float maxRotate, minRotate;//限制角度
public float rotateHead;//相机方向
public float headSpeed;//相机移动速度
// Use this for initialization
void Start()
{
rigidbody = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
float hor = Input.GetAxisRaw("Horizontal");
float ver = Input.GetAxisRaw("Vertical");
Vector3 morDir = hor * transform.right + ver * transform.forward;
void Update()
{
float hor = Input.GetAxisRaw("Horizontal");
float ver = Input.GetAxisRaw("Vertical");
Vector3 morDir = hor * transform.right + ver * transform.forward;
rigidbody.MovePosition(morDir.normalized * speed * Time.deltaTime + transform.position);
float mouseX = Input.GetAxisRaw("Mouse X");
float mouseY = Input.GetAxisRaw("Mouse Y");
float mouseY = Input.GetAxisRaw("Mouse Y");
rigidbody.MoveRotation(transform.rotation * Quaternion.Euler(new Vector3(0, mouseX * rotateSpeed, 0) * Time.deltaTime));
rotateHead += mouseY * headSpeed * Time.deltaTime;
if (rotateHead > maxRotate) rotateHead = maxRotate;
if (rotateHead < minRotate) rotateHead = minRotate;
cameraTF.localEulerAngles = new Vector3(-rotateHead, 0, 0);
if (rotateHead > maxRotate) rotateHead = maxRotate;
if (rotateHead < minRotate) rotateHead = minRotate;
cameraTF.localEulerAngles = new Vector3(-rotateHead, 0, 0);
}
}
}