using System; using UnityEngine; [RequireComponent(typeof(CharacterController))] public class PlayerMove : MonoBehaviour { private CharacterController _controller; [SerializeField] private float moveSpeed = 6.0f; private Camera mainCamera; [SerializeField] private float rotateSpeed = 50; private float x, y; //重力 [SerializeField] private float gravity = 110f; [SerializeField] private float jumpSpeed = 8.0f; private Vector3 moveDirection = Vector3.zero; private void Awake() { _controller = GetComponent(); mainCamera = Camera.main; } private void Update() { // Move if (_controller.isGrounded) { moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); moveDirection = transform.TransformDirection(moveDirection); moveDirection *= moveSpeed; if (Input.GetButton("Jump")) moveDirection.y = jumpSpeed; } moveDirection.y -= gravity * Time.deltaTime; _controller.Move(moveDirection * Time.deltaTime); // Rotate if (Input.GetMouseButton(1)) { y = Input.GetAxis("Mouse X"); x = Input.GetAxis("Mouse Y"); mainCamera.transform.eulerAngles += new Vector3(-x * Time.deltaTime * rotateSpeed, 0, 0); transform.eulerAngles += new Vector3(0, y * Time.deltaTime * rotateSpeed, 0); } } }