Глюк с прыжком персонажа

Ошибки и баги Unity3D

Глюк с прыжком персонажа

Сообщение iseedeadpeople 28 мар 2021, 23:59

Ребят в чем может быть дело?

Не с первого нажатия на пробел персонаж прыгает. Лево\Право всё ок. Причем может прыгнуть пару раз подряд а потом тупить и так далее. Как будто клавиатура сломана (с клавой всё ок, с кодом тоже). Меняю значение (KeyCode.Space) на (KeyCode.UpArrow) та же шляпа.

Помогите пожалуйста.
Аватара пользователя
iseedeadpeople
UNец
 
Сообщения: 2
Зарегистрирован: 28 мар 2021, 23:45

Re: Глюк с прыжком персонажа

Сообщение 1max1 29 мар 2021, 00:37

А, ну спасибо что код показал, да. Ща погоди кофейную гущу достану, агааааааааааааааааааааааааааа, такс такс такс, что тут у нас, ну кароче у тебя там фигня одна, надо кое что подправить, вот там вот, ну всё, не благодари, обращайся если чо :-*
Ну а если серьезно, то возможно ты проверку делаешь в фикс апдейте, а не в апдейте.
Аватара пользователя
1max1
Адепт
 
Сообщения: 4550
Зарегистрирован: 28 июн 2017, 10:51

Re: Глюк с прыжком персонажа

Сообщение iseedeadpeople 29 мар 2021, 00:49

1max1 писал(а):А, ну спасибо что код показал, да. Ща погоди кофейную гущу достану, агааааааааааааааааааааааааааа, такс такс такс, что тут у нас, ну кароче у тебя там фигня одна, надо кое что подправить, вот там вот, ну всё, не благодари, обращайся если чо :-*
Ну а если серьезно, то возможно ты проверку делаешь в фикс апдейте, а не в апдейте.


Да ради бога) Вот код.
Скрытый текст:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
Rigidbody2D rb;
public float speed;
public float jumpHeight;
public Transform groundCheck;
bool isGrounded;
Animator anim;

// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}

// Update is called once per frame
void Update()
{
CheckGround();
if (Input.GetAxis("Horizontal") == 0 && (isGrounded))
{
anim.SetInteger("State", 1);
}
else {
Flip();
if (isGrounded)
anim.SetInteger("State", 2);
}

}

private void FixedUpdate()
{
rb.velocity = new Vector2(Input.GetAxis("Horizontal") * speed, rb.velocity.y);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
rb.AddForce(transform.up * jumpHeight, ForceMode2D.Impulse);
}

void Flip()
{
if (Input.GetAxis("Horizontal") > 0)
transform.localRotation = Quaternion.Euler(0, 0, 0);
if (Input.GetAxis("Horizontal") < 0)
transform.localRotation = Quaternion.Euler(0, 180, 0);
}
void CheckGround()
{
Collider2D[] colliders = Physics2D.OverlapCircleAll(groundCheck.position, 0.2f);
isGrounded = colliders.Length > 1;
if (!isGrounded)
anim.SetInteger("State", 3);
}

}


Ну а если серьезно, то возможно ты проверку делаешь в фикс апдейте, а не в апдейте.

>> Я тоже так сначала подумал но обработка в апдейте не помогает решить проблему.

И да, я совсем новенький, пытаюсь учить по курсам что нашел в сети.
Последний раз редактировалось iseedeadpeople 29 мар 2021, 00:54, всего редактировалось 1 раз.
Аватара пользователя
iseedeadpeople
UNец
 
Сообщения: 2
Зарегистрирован: 28 мар 2021, 23:45

Re: Глюк с прыжком персонажа

Сообщение Alkos26Rus 29 мар 2021, 00:52

1max1 писал(а):А, ну спасибо что код показал, да. Ща погоди кофейную гущу достану, агааааааааааааааааааааааааааа, такс такс такс, что тут у нас, ну кароче у тебя там фигня одна, надо кое что подправить, вот там вот, ну всё, не благодари, обращайся если чо :-*
Ну а если серьезно, то возможно ты проверку делаешь в фикс апдейте, а не в апдейте.

Ну он же сказал с кодом все ОК, значит все ОК, наверно у него сущность завелась в виде гномика, есть специалисты по данному профилю?
Единица - ноль
Аватара пользователя
Alkos26Rus
UNIверсал
 
Сообщения: 356
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Глюк с прыжком персонажа

Сообщение Alkos26Rus 29 мар 2021, 01:01

iseedeadpeople писал(а):>> Я тоже так сначала подумал но обработка в апдейте не помогает решить проблему.


Он имел ввиду засунь в Update саму проверку на нажатие
Синтаксис:
Используется csharp
void Update()
{
CheckGround();
if (Input.GetAxis("Horizontal") == 0 && (isGrounded))
{
anim.SetInteger("State", 1);
}
else {
Flip();
if (isGrounded)
anim.SetInteger("State", 2);
}

rb.velocity = new Vector2(Input.GetAxis("Horizontal") * speed, rb.velocity.y);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
rb.AddForce(transform.up * jumpHeight, ForceMode2D.Impulse);
}
 
Единица - ноль
Аватара пользователя
Alkos26Rus
UNIверсал
 
Сообщения: 356
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Глюк с прыжком персонажа

Сообщение 1max1 29 мар 2021, 01:06

но обработка в апдейте не помогает решить проблему.

Ну если ты так в этом уверен, тогда причины в isGrounded, возможно он иногда фолс, даже когда на земле.
В любом случае все что связано с инпут, должно быть в апдейте и никак иначе.
Аватара пользователя
1max1
Адепт
 
Сообщения: 4550
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Глюки

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1