Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Можете написать код передвижения игрока в юнити

Fun guy Ученик (153), открыт 1 неделю назад
пж
1 ответ
GGG Просветленный (34910) 1 неделю назад
 using UnityEngine; 

public class PlayerMovement : MonoBehaviour
{
[Header("Настройки движения")]
[SerializeField] private float moveSpeed = 5f;
[SerializeField] private float runSpeed = 8f;
[SerializeField] private float jumpForce = 5f;

private Rigidbody rb;
private bool isGrounded;
private float currentSpeed;

void Start()
{
rb = GetComponent<Rigidbody>();
currentSpeed = moveSpeed;
}

void Update()
{
// Проверка бега (при нажатии shift)
if (Input.GetKey(KeyCode.LeftShift))
{
currentSpeed = runSpeed;
}
else
{
currentSpeed = moveSpeed;
}

// Получаем входные данные
float horizontalInput = Input.GetAxisRaw("Horizontal");
float verticalInput = Input.GetAxisRaw("Vertical");

// Создаем вектор движения
Vector3 movement = new Vector3(horizontalInput, 0f, verticalInput).normalized;

// Перемещаем персонажа
if (movement.magnitude >= 0.1f)
{
transform.Translate(movement * currentSpeed * Time.deltaTime, Space.World);

// Поворачиваем персонажа в направлении движения
transform.forward = movement;
}

// Прыжок
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
isGrounded = false;
}
}

void OnCollisionEnter(Collision collision)
{
// Проверяем, приземлился ли персонаж
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
}
Fun guyУченик (153) 4 дня назад
Спасибо!
Похожие вопросы