try to fix movement up

This commit is contained in:
Vova
2023-07-22 20:50:54 +03:00
parent 6ed4996b38
commit c39cff19c5
+19 -9
View File
@@ -73,15 +73,17 @@ public abstract class Character : MonoBehaviour
if (_isOnLadder) if (_isOnLadder)
{ {
float ladderCenterDistance = Mathf.Abs(transform.position.x - block.transform.position.x); float ladderXCenterDistance = Mathf.Abs(transform.position.x - block.transform.position.x);
float v_movement = inputVertical; float v_movement = inputVertical;
isAllowVertical = ladderCenterDistance < 0.3f;
SetClimbingAnimation(v_movement != 0);
_body.velocity = new Vector2(h_movement * _movementSpeed, v_movement * _movementSpeed);
isAllowVertical = (ladderXCenterDistance < 0.3f) || (CanClimbUp() && v_movement>0);
if (isAllowVertical)
{
SetClimbingAnimation(v_movement != 0);
_body.velocity = new Vector2(h_movement * _movementSpeed, v_movement * _movementSpeed);
}
} }
else else
{ {
@@ -120,16 +122,24 @@ public abstract class Character : MonoBehaviour
private void Death() private void Death()
{ {
OnDeath(); OnDeath();
} }
private bool CanClimbUp()
{
var rayCastHit = Physics2D.Raycast(_capsuleCollider.bounds.center, Vector2.down, _capsuleCollider.size.y / 2,_mapLayer);
if(rayCastHit)
if(rayCastHit.collider.transform.GetComponent<MapElement>().ElementSO.ElementType==MapElementType.Ladder)
{
return true;
}
return false;
}
private MapElement GetMapElement() private MapElement GetMapElement()
{ {
var playerBounds = _capsuleCollider.bounds.center;
var collider = BoxCast(playerBounds, _cellSize, 0f, Vector3.forward, .01f, _mapLayer); var collider = BoxCast(_capsuleCollider.bounds.center, _cellSize, 0f, Vector3.forward, .01f, _mapLayer);
Color color = Color.red; Color color = Color.red;
MapElement mapElement = null; MapElement mapElement = null;
if (collider.Length > 0) if (collider.Length > 0)