Прыжковая проблема

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Прыжковая проблема

Сообщение snq 09 окт 2023, 22:35

Привет.
Почему-то мой персонаж когда прыгает на другой объект со слоем Ground сначала совершает маленький прыжок, а потом совершает обычный(а иногда и вовсе больше, чем нужно).
Как я понимаю, это связано с разницей кадров, но я пробовал переместить
Синтаксис:
Используется csharp
hor = Input.GetAxisRaw("Horizontal");
         jump = Input.GetAxis("Jump");

в метод FixedUpdate и поведение не изменилось.
Я знаю, что проблему можно будет решить если поменять с GetAxis на GetButtonDown, но мне хочется создать механику, при которой персонаж будет совершать стабильный прыжок при постоянно зажатом пробеле. Как это можно реализовать?
Код:
Синтаксис:
Используется csharp
using UnityEngine;

public class Cubemove : MonoBehaviour
{
    [SerializeField] float speed = 12.5f, jumpforce = 12.5f;
    [SerializeField] Transform GroundCheck;
    [SerializeField] LayerMask GroundLayer;
    bool FaceRight;
    Rigidbody2D rb;
    float hor, jump;
    private void Start() {
        rb = GetComponent<Rigidbody2D>();
    }
    private void Update() {
         hor = Input.GetAxisRaw("Horizontal");
         jump = Input.GetAxis("Jump");
    }
    private void FixedUpdate() {
       
        Vector3 move = new Vector2(hor * speed * Time.fixedDeltaTime, rb.velocity.y);
        rb.velocity =  move;
       


        if(jump > 0 && isGround() == true) {
            rb.AddForce(Vector2.up * jumpforce * jump, ForceMode2D.Force);
        }

       
        if(hor > 0 && FaceRight == true || hor < 0 && FaceRight == false) {
           Flip();
        }
    }


    bool isGround () {
        return Physics2D.OverlapCircle(GroundCheck.position, 0.1f, GroundLayer);
    }
    void Flip() {
        Vector2 flip = transform.localScale;
            flip.x *= -1f;
            transform.localScale = flip;
            FaceRight = !FaceRight;
    }
 
       
}



Видео = https://youtu.be/dEkf6Y6hoco
snq
UNец
 
Сообщения: 4
Зарегистрирован: 01 июл 2023, 23:54

Re: Прыжковая проблема

Сообщение Jarico 10 окт 2023, 12:24

Попробуй ForceMode.Impulse
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Прыжковая проблема

Сообщение 1max1 11 окт 2023, 02:48

Тебе стоит блокировать прыжок на пару кадров после его совершения ибо там дабл джамп, либо сделать адекватный он граунд чек, то что у тебя сейчас это костыль))
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 23