@YakutD

Почему персонаж выталкивается с лестницы?

Делаю возможность взбираться по вертикальным лестницам в 2D игре. По итогу, персонаж взбирается по лестнице, но его постоянно куда то выталкивает с этой самой лестницы. Если в момент вскарабкивания нажимать клавиши управления персонажем влево-вправо (чтобы противостоять выталкиванию) то персонажа попросту "колотит", трясет как будто перед ними какое то препятствие. В чем моя ошибка? Прилагаю скрины инспекторов перса и лестницы, а так же код вскарабкивания.

Персонаж:
5c11136bc9bf9331791609.png5c1113743415b673881045.png

Лестница:
5c11137fce47c006161816.png

Код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Climbing : MonoBehaviour {
    private PlayerController player;

    public float distance;
    public LayerMask whatisLadder;
    private bool isClimbing;
   
    // Use this for initialization
    void Start () {
        player = GetComponent<PlayerController>();
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        float Horizontal = Input.GetAxisRaw("Horizontal");
        float Vertical = Input.GetAxisRaw("Vertical");

        RaycastHit2D hitinfo = Physics2D.Raycast(transform.position, Vector2.up, distance, whatisLadder);

        if (hitinfo.collider != null)
        {
            player.canjump = false;
            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                isClimbing = true;
            }
            else if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.LeftArrow))
            {
                isClimbing = false;
            }
        }
        else
        {
            player.canjump = true;
        }

        if (isClimbing && hitinfo.collider != null)
        {
            player.rb.velocity = new Vector2(player.rb.position.x, Vertical * player.speed);
            player.rb.gravityScale = 0;
        }
        else
        {
            player.rb.gravityScale = 3;
        }
    }
}
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@YakutD Автор вопроса
Если FixedUpdate заменить на просто Update, то проблема пропадает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы