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

Как вписать прыжок в скрипт?

саша мордашов Ученик (148), на голосовании 3 месяца назад
Скрипт в фотке или текстом ниже. Как мне вписать прыжок и детскую гравитацию в скрипт? Например гравитации:
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);
}
}

Голосование за лучший ответ
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`).
саша мордашовУченик (148) 4 месяца назад
Спасибо!
Похожие вопросы