From 4c1443787de70b96ba56c31db009538a2724667e Mon Sep 17 00:00:00 2001 From: Vova <3emaster@gmail.com> Date: Sat, 1 Jul 2023 10:53:25 +0300 Subject: [PATCH] better but still have problems --- Assets/Scripts/Character.cs | 108 ++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 61 deletions(-) diff --git a/Assets/Scripts/Character.cs b/Assets/Scripts/Character.cs index 320a558..73356e7 100644 --- a/Assets/Scripts/Character.cs +++ b/Assets/Scripts/Character.cs @@ -37,75 +37,61 @@ public abstract class Character : MonoBehaviour protected void MoveTo(float inputHorizontal, float inputVertical) { - var mapElement = GetMapElement(Vector2.down); + var mapElement = GetMapElement(Vector2.down); - _isOnBridge = mapElement == MapElementType.Bridge && !_isFalling; +_isOnBridge = mapElement == MapElementType.Bridge && !_isFalling; - - if (mapElement == MapElementType.Wall || _isOnLadder || _isOnBridge || mapElement == MapElementType.BreakableWall) +if (mapElement == MapElementType.Wall || _isOnLadder || _isOnBridge || mapElement == MapElementType.BreakableWall) +{ + var leftCheck = GetMapElement(Vector2.left); + var rightCheck = GetMapElement(Vector2.right); + + isAllowLeft = !(leftCheck == MapElementType.Wall || leftCheck == MapElementType.BreakableWall); + isAllowRight = !(rightCheck == MapElementType.Wall || rightCheck == MapElementType.BreakableWall); + + isAllowVertical = false; + _isFalling = false; + + float h_movement =inputHorizontal; + if (h_movement > 0 && !_facingRight || h_movement < 0 && _facingRight) + { + FlipCharacter(); + } + + SetWalkingAnimation(h_movement != 0); + + var upperElement = GetMapElement(Vector2.up); + _isOnLadder = mapElement == MapElementType.Ladder || upperElement == MapElementType.Ladder; + + if (_isOnLadder) + { + isAllowVertical = true; + _isOnLadder = true; + + float v_movement = inputVertical; + if (v_movement > 0 && upperElement != MapElementType.Ladder) { - var leftCheck = GetMapElement(Vector2.left); - var rightCheck = GetMapElement(Vector2.right); - if (leftCheck == MapElementType.Wall || leftCheck == MapElementType.BreakableWall) - { - isAllowLeft = false; - } - else - { - isAllowLeft = true; - } - if (rightCheck == MapElementType.Wall || rightCheck== MapElementType.BreakableWall) - { - isAllowRight = false; - } - else - { - isAllowRight = true; - } - - isAllowVertical = false; - _isFalling = false; - float h_movement = inputHorizontal; - if (h_movement > 0 && !_facingRight) - { - FlipCharacter(); - } - if (h_movement < 0 && _facingRight) - { - FlipCharacter(); - } - - SetWalkingAnimation(h_movement != 0); - - var upperElement = GetMapElement(Vector2.up); - _isOnLadder = mapElement == MapElementType.Ladder || upperElement == MapElementType.Ladder; - if (_isOnLadder) - { - - isAllowVertical = true; - _isOnLadder = true; - v_movement = inputVertical; - if (v_movement > 0) - { - - if (upperElement != MapElementType.Ladder) - { - v_movement = 0; - } - } - SetClimbingAnimation(v_movement != 0); - } - _body.velocity = new Vector2(h_movement * MovementSpeed, v_movement * MovementSpeed); - } - else - { - _isFalling = true; + v_movement = 0; } + + SetClimbingAnimation(v_movement != 0); + _body.velocity = new Vector2(h_movement * MovementSpeed, v_movement * MovementSpeed); + } + else + { + _body.velocity = new Vector2(h_movement * MovementSpeed, _body.velocity.y); + } +} +else +{ + _isFalling = true; +} + } private MapElementType GetMapElement(Vector2 direction) { - var raycastHit = Physics2D.BoxCast(_boxCollider.bounds.center, _boxCollider.bounds.size, 0f, direction, 0.2f, _mapLayer); + var raycastHit = Physics2D.BoxCast(_boxCollider.bounds.center, _boxCollider.bounds.size, 0f, direction, 0.01f, _mapLayer); if (raycastHit) { var mapElement = raycastHit.transform.GetComponent();