52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
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<CharacterController>();
|
|
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);
|
|
}
|
|
}
|
|
} |