前情提要
1.创建Capsule,为其挂载如下物体及组件。
挂载物体:Main Camera、GroundCheck(空物体)

2.为Main Camera添加摄像机代码(CameraController)。
摄像机(角色)视角
using System.Collections;using System.Collections.Generic;using UnityEngine;public class CameraController : MonoBehaviour {public Transform player;private float mouseX, mouseY; //获取鼠标移动的值public float mouseSensitivity; //鼠标灵敏度public float xRotation;private void Start () {Cursor.lockState = CursorLockMode.Locked;}private void Update () {mouseX = Input.GetAxis ("Mouse X") * mouseSensitivity * Time.deltaTime;mouseY = Input.GetAxis ("Mouse Y") * mouseSensitivity * Time.deltaTime;xRotation -= mouseY;xRotation = Mathf.Clamp (xRotation, -70f, 70f);player.Rotate (Vector3.up * mouseX);transform.localRotation = Quaternion.Euler (xRotation, 0, 0);}}
角色移动
using System.Collections;using System.Collections.Generic;using UnityEngine;public class PlayerController : MonoBehaviour {private CharacterController cc;//CharacterControllerpublic float moveSpeed;//移动速度public float jumpSpeed;//跳跃速度private float horizontalMove, verticalMove;private Vector3 dir;public float gravity;//重力private Vector3 velocity;//速率public Transform groundCheck;//地面检测public float checkRadius;public LayerMask groundLayer;public bool isGround;private void Start () {cc = GetComponent<CharacterController> ();}private void Update () {isGround = Physics.CheckSphere (groundCheck.position, checkRadius, groundLayer);if (isGround && velocity.y < 0) {velocity.y = -2f;}horizontalMove = Input.GetAxis ("Horizontal") * moveSpeed;//左右移动verticalMove = Input.GetAxis ("Vertical") * moveSpeed;//前后移动dir = transform.forward * verticalMove + transform.right * horizontalMove;cc.Move (dir * Time.deltaTime);if (Input.GetButtonDown ("Jump") && isGround) {velocity.y += jumpSpeed;}velocity.y -= gravity * Time.deltaTime;cc.Move (velocity * Time.deltaTime);}}
