ALess
Мастер
(1412)
4 месяца назад
Прыжок:
Добавь переменные для проверки может ли игрок прыгать (canJump) и силу прыжка (jumpForce). Заставь игрока прыгать по пробелу и обнови isGrounded и canJump.
Детская гравитация:
Измени значение переменной gravity на меньше, например -4.905f, чтобы уменьшить гравитацию вдвое.
EXTRIM™
Мастер
(1087)
4 месяца назад
Для добавления прыжка и гравитации в ваш скрипт, вам нужно будет добавить несколько переменных и условий. Вот пример, как это можно сделать:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : 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);
}
}
```
В этом скрипте:
1. Добавлены переменные для силы прыжка, гравитации, проверки нахождения на земле и т.д.
2. В методе `Update` проверяется, находится ли игрок на земле, и применяется гравитация.
3. Если игрок нажимает кнопку прыжка (`Input.GetButtonDown("Jump")`) и находится на земле, то применяется сила прыжка.
Не забудьте добавить `GroundCheck` объект в вашу сцену и настроить слой земли (`groundLayer`).
if(isGrounded = false){y-=1}
Скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
//Придаем скорость
public float speed = 5f;
void Update()
{
//Создаю и обнавляю праметры движения
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 direction = new Vector3(horizontal, 0f, vertical).normalized;
Vector3 velocity = direction * speed;
transform.Translate(velocity * Time.deltaTime);
}
}