using UnityEngine;
public class RigidPlayerMovement : MonoBehaviour
{
public float jumpForce = 7.0f; // Сила прыжка
private bool isGrounded;
public float moveSpeed = 5f;
private Rigidbody rb;
public float rotationSpeed = 200.0f; // Скорость вращения
private void Start()
{
rb = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontalInput, 0f, verticalInput) * moveSpeed;
rb.MovePosition(rb.position + movement * Time.fixedDeltaTime);
}
// ВРАЩЕНИЕ
void Update()
{
// Проверяем, нажата ли клавиша Q
if (Input.GetKey(KeyCode.Q))
{
// Вращаем персонажа влево
transform.Rotate(0, -rotationSpeed * Time.deltaTime, 0);
}
// Проверяем, нажата ли клавиша R
if (Input.GetKey(KeyCode.E))
{
// Вращаем персонажа вправо
transform.Rotate(0, rotationSpeed * Time.deltaTime, 0);
}
// ПРЫГАТЬ
// Проверяем, нажата ли клавиша пробела и персонаж на земле
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
Jump();
}
}
// ПРЫГАТЬ
void OnCollisionEnter(Collision collision)
{
// Проверяем, касается ли персонаж земли
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
void OnCollisionExit(Collision collision)
{
// Если покинули землю, устанавливаем флаг
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = false;
}
}
void Jump()
{
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); // Добавляем силу для прыжка
}
}
Комментариев 1