Проблема в управлении персонажем "Персонаж не может прыгать" - PullRequest
0 голосов
/ 14 мая 2019

Я занимаюсь созданием 2D-игры и пишу код на C #, но мой персонаж не может прыгнуть.

Я пытаюсь заменить «Пробел» на «Стрелка вверх», которая также неработа.

if (Input.GetKey(KeyCode.UpArrow) && onGround)
 {
 rb.velocity = new Vector2(rb.velocity.x, jumppower);
 }

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

1 Ответ

0 голосов
/ 14 мая 2019

Некоторые пункты для начала:

  1. , убедитесь, что onGroundis true.=> добавьте Debug.Log($"is on ground {onGround}") перед if и проверьте его.
  2. Убедитесь, что код находится в цикле Update () (вы можете установить его также в FixedUpdate, но обновление лучше)

Тогда я вижу проблему логики.Вот что происходит в вашем коде:

  • вы на земле
  • вы прибавляете скорость и продвигаетесь вверх
  • вас больше нет на земле
  • если не получается, вертикальная скорость останавливается, потому что вы больше не на земле
  • игрок отступает

Чтобы решить эту проблему, замените эту строку:

rb.velocity = new Vector2(rb.velocity.x, jumppower);

При этом:

rb.AddForce(new Vector2(0, jumppower), ForceMode2D.Impulse);
...