Atharv Goyal Ответов: 1

Как заставить игрока прыгать только один раз за кадр?


Я смотрю видео "Imphenzia", я вижу, что мой и его код одинаковы, но он прыгает только один раз, а мой прыгает несколько раз и ломает игру. ссылка на его видео находится здесь
[УДАЛЕННЫЙ]

Что я уже пробовал:

using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
using UnityEngine;

public class Player : MonoBehaviour
{
    private bool JumpKeyWasPressed;
    private float HorizontalInput;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            JumpKeyWasPressed = true;
        }
        HorizontalInput = Input.GetAxis("Horizontal");

    }
    void FixedUpdate()
    {
        if (JumpKeyWasPressed)
        {
            GetComponent<Rigidbody>().AddForce(Vector3.up * 5, ForceMode.VelocityChange);
            JumpKeyWasPressed = false;
        }
    }
}

F-ES Sitecore

GetKeyDown будет возвращать true только один раз за кадр, поэтому я не вижу, как он будет делать это несколько раз, если у вас нет каких-то сумасшедших проблем с fps. Попробуйте изменить строку на

если (!JumpKeyWasPressed && Input.GetKeyDown(KeyCode.Space))

и посмотрим, будет ли это иметь значение.

1 Ответов

Рейтинг:
1

OriginalGriff

Если вы получили код из видео на Youtube, то используйте форум в нижней части видео, чтобы поговорить с автором: он должен знать свой код намного лучше, чем случайный сайт.

Если он не знает, или он не отвечает, то вы будете знать, что его код-мусор, и вы должны посмотреть еще раз.

В общем, учебные пособия по разработке Youtube-это пустая трата времени и энергии: они создаются людьми, которые ничего не знают о создании видео и часто меньше, чем о предмете, который они представляют. Большинство из них существуют только для того, чтобы получать лайки и подписки - монетизация-это название игры!