@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, то проблема пропадает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы