using UnityEngine; public class FPControllerWEB : MonoBehaviour { public float moveSpeed = 5f; // Скорость движения public float mouseSensitivity = 2f; // Чувствительность мыши public float jumpForce = 5f; // Сила прыжка public LayerMask groundLayer; // Слой, представляющий землю private Rigidbody rb;
private float rotationX = 0f; // Угол поворота по оси X public float upDownLimit = 80f; // Ограничение для поворота по оси X public bool isGrounded; // Проверка на нахождение на земле public float distanceGround = 1f; // Ограничение для поворота по оси X void Start() { rb = GetComponent(); // Получаем компонент Rigidbody } void FixedUpdate() { // Проверяем, на земле ли персонаж isGrounded = Physics.Raycast(transform.position, Vector3.down, distanceGround, groundLayer); // Получаем ввод с клавиатуры float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); // Создаем вектор движения в пространстве камеры Vector3 forward = Camera.main.transform.TransformDirection(Vector3.forward); Vector3 right = Camera.main.transform.TransformDirection(Vector3.right);
// Нормализуем векторы для получения направления движения forward.y = 0; // Убираем влияние по вертикали right.y = 0; // Убираем влияние по вертикали forward.Normalize(); // Нормализация вектора для равномерного движения right.Normalize(); // Нормализация вектора для равномерного движения // Создаем вектор движения с учетом направления камеры Vector3 movement = forward * moveVertical + right * moveHorizontal; // Применяем силу к Rigidbody для движения rb.AddForce(movement * moveSpeed); // Вращение мыши float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity; float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity; // Ограничиваем вращение вверх/вниз rotationX -= mouseY; rotationX = Mathf.Clamp(rotationX, -upDownLimit, upDownLimit); // Применяем вращение к объекту transform.localRotation = Quaternion.Euler(rotationX, transform.eulerAngles.y + mouseX, 0); // Прыжок if (isGrounded && Input.GetButtonDown("Jump")) // Проверяем, что персонаж на земле и нажата клавиша прыжка { rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); // Применяем силу вверх } } }
using UnityEngine;
public class FPControllerWEB : MonoBehaviour
{
public float moveSpeed = 5f; // Скорость движения
public float mouseSensitivity = 2f; // Чувствительность мыши
public float jumpForce = 5f; // Сила прыжка
public LayerMask groundLayer; // Слой, представляющий землю
private Rigidbody rb;
private float rotationX = 0f; // Угол поворота по оси X
public float upDownLimit = 80f; // Ограничение для поворота по оси X
public bool isGrounded; // Проверка на нахождение на земле
public float distanceGround = 1f; // Ограничение для поворота по оси X
void Start()
{
rb = GetComponent(); // Получаем компонент Rigidbody
}
void FixedUpdate()
{
// Проверяем, на земле ли персонаж
isGrounded = Physics.Raycast(transform.position, Vector3.down, distanceGround, groundLayer);
// Получаем ввод с клавиатуры
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
// Создаем вектор движения в пространстве камеры
Vector3 forward = Camera.main.transform.TransformDirection(Vector3.forward);
Vector3 right = Camera.main.transform.TransformDirection(Vector3.right);
// Нормализуем векторы для получения направления движения
forward.y = 0; // Убираем влияние по вертикали
right.y = 0; // Убираем влияние по вертикали
forward.Normalize(); // Нормализация вектора для равномерного движения
right.Normalize(); // Нормализация вектора для равномерного движения
// Создаем вектор движения с учетом направления камеры
Vector3 movement = forward * moveVertical + right * moveHorizontal;
// Применяем силу к Rigidbody для движения
rb.AddForce(movement * moveSpeed);
// Вращение мыши
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
// Ограничиваем вращение вверх/вниз
rotationX -= mouseY;
rotationX = Mathf.Clamp(rotationX, -upDownLimit, upDownLimit);
// Применяем вращение к объекту
transform.localRotation = Quaternion.Euler(rotationX, transform.eulerAngles.y + mouseX, 0);
// Прыжок
if (isGrounded && Input.GetButtonDown("Jump")) // Проверяем, что персонаж на земле и нажата клавиша прыжка
{
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); // Применяем силу вверх
}
}
}
Оооо, это круто😊