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

Что не так с кодом? Персонаж просто уходит под землю. C#

саша мордашов Ученик (148), на голосовании 1 месяц назад
 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
// Придаем скорость
public float speed = 5f;
// Сила прыжка
public float jumpForce = 10f;
// Гравитация
public float gravity = -9.81f;
// Переменная для хранения вертикальной скорости
private float verticalVelocity = 0f;
// Слой, который считается землей
public LayerMask groundLayer;
// Объект, который проверяет, на земле ли игрок
public Transform groundCheck;
// Радиус проверки земли
public float groundDistance = 0.4f;
// Флаг, указывающий, на земле ли игрок
private bool isGrounded;
void Update()
{
// Проверяем, на земле ли игрок
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundLayer);

// Если игрок на земле, сбрасываем вертикальную скорость
if (isGrounded && verticalVelocity < 0)
{
verticalVelocity = -2f;
}
//СОздаем и обнавляю праметры движения
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");

Vector3 direction = new Vector3(horizontal, 0f, vertical).normalized;
Vector3 velocity = direction * speed;


// Добавляем гравитацию
verticalVelocity += gravity * Time.deltaTime;

// Если нажата кнопка прыжка и игрок на земле
if (Input.GetButtonDown("Jump") && isGrounded)
{
verticalVelocity = Mathf.Sqrt(jumpForce * -2f * gravity);
}

// Применяем вертикальную скорость
velocity.y = verticalVelocity;

// Перемещаем игрока
transform.Translate(velocity * Time.deltaTime);
}
}

Голосование за лучший ответ
[ ] [ ] Мастер (1178) 2 месяца назад
Коллайдеры есть на персонаже и земле?
саша мордашовУченик (148) 2 месяца назад
Забыл проверить...
саша мордашовУченик (148) 2 месяца назад
Дома буду проверю
Похожие вопросы