@WinstonTails

Как реализовать прыжок в 2D игре?

Попробовал реализовать прыжок в 2D игре и при запуске проект персонаж улетал в небо без нажатия пробела

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{
public Rigidbody2D physic;

private bool isGrounded;
private float groundRadius = 0.7f;

public Transform GroundCheck;
public LayerMask groundMask;

void Start()
{

}

void Update()
{

transform.Translate(Vector3.right * 0.1f);

isGrounded = Physics2D.OverlapCircle(GroundCheck.position, groundRadius, groundMask);

if (Input.GetKeyDown(KeyCode.Space) && isGrounded == true) ;
{
physic.AddForce(new Vector2(0, 10));
}


} }
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Farawa
Во первых почему после условия на проверку нажатия стоит ";"? Во вторых добавь в addforce вторым параметром forcemode.impulse
Ответ написан
Комментировать
@NIKROTOS
Начинающий программист.
void Update()
{
transform.Translate(Vector3.right * 0.1f);

В этой строчке ты каждый кадр что-то двигаешь, причём без какого либо условия.
Кстати, почему в 2D игре ты используешь Vector3 ? (скорее всего в этом проблема)
Ну и если не знаешь где ошибка, то добавляй переменные, по значению которых, можешь определить в каком состоянии объект.
например:
if (Input.GetKeyDown(KeyCode.Space) && isGrounded == true) ;
{
physic.AddForce(new Vector2(0, 10));
isSpace=true;
}

Так ты точно сможешь понять, в этом ли отрезке программы ошибка (isSpace должен отображаться в инспекторе).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы