Files
2026-03-04 10:03:45 +08:00

50 lines
1.4 KiB
C#

using UnityEngine;
namespace TheVegetationEngine
{
[RequireComponent(typeof(CharacterController))]
public class TVESimpleFPSController : MonoBehaviour
{
public float walkingSpeed = 2f;
public float lookSpeed = 2f;
public float lookXLimit = 45f;
[Space(10f)]
public Camera playerCamera;
private CharacterController characterController;
private float rotationX;
private void Start()
{
characterController = GetComponent<CharacterController>();
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
private void Update()
{
float num = 1f;
if (Input.GetKey(KeyCode.LeftShift))
{
num = 3f;
}
Vector3 vector = base.transform.TransformDirection(Vector3.forward);
Vector3 vector2 = base.transform.TransformDirection(Vector3.right);
Vector3 vector3 = vector * walkingSpeed * num * Input.GetAxis("Vertical") + vector2 * walkingSpeed * num * Input.GetAxis("Horizontal");
if (!characterController.isGrounded)
{
vector3 += Physics.gravity;
}
characterController.Move(vector3 * Time.deltaTime);
rotationX += (0f - Input.GetAxis("Mouse Y")) * lookSpeed;
rotationX = Mathf.Clamp(rotationX, 0f - lookXLimit, lookXLimit);
playerCamera.transform.localRotation = Quaternion.Euler(rotationX, 0f, 0f);
base.transform.rotation *= Quaternion.Euler(0f, Input.GetAxis("Mouse X") * lookSpeed, 0f);
}
}
}