Делаю возможность взбираться по вертикальным лестницам в 2D игре. По итогу, персонаж взбирается по лестнице, но его постоянно куда то выталкивает с этой самой лестницы. Если в момент вскарабкивания нажимать клавиши управления персонажем влево-вправо (чтобы противостоять выталкиванию) то персонажа попросту "колотит", трясет как будто перед ними какое то препятствие. В чем моя ошибка? Прилагаю скрины инспекторов перса и лестницы, а так же код вскарабкивания.
Персонаж:
Лестница:
Код:
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;
}
}
}