WIP
This commit is contained in:
+47
-46
@@ -37,55 +37,56 @@ public abstract class Character : MonoBehaviour
|
|||||||
|
|
||||||
protected void MoveTo(float inputHorizontal, float inputVertical)
|
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)
|
|
||||||
{
|
{
|
||||||
v_movement = 0;
|
var leftCheck = GetMapElement(Vector2.left);
|
||||||
}
|
var rightCheck = GetMapElement(Vector2.right);
|
||||||
|
|
||||||
SetClimbingAnimation(v_movement != 0);
|
isAllowLeft = !(leftCheck == MapElementType.Wall || leftCheck == MapElementType.BreakableWall);
|
||||||
_body.velocity = new Vector2(h_movement * MovementSpeed, v_movement * MovementSpeed);
|
isAllowRight = !(rightCheck == MapElementType.Wall || rightCheck == MapElementType.BreakableWall);
|
||||||
}
|
|
||||||
else
|
isAllowVertical = false;
|
||||||
{
|
_isFalling = false;
|
||||||
_body.velocity = new Vector2(h_movement * MovementSpeed, _body.velocity.y);
|
|
||||||
}
|
float h_movement = inputHorizontal;
|
||||||
}
|
if (h_movement > 0 && !_facingRight || h_movement < 0 && _facingRight)
|
||||||
else
|
{
|
||||||
{
|
FlipCharacter();
|
||||||
_isFalling = true;
|
}
|
||||||
}
|
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,7 +96,7 @@ else
|
|||||||
if (raycastHit)
|
if (raycastHit)
|
||||||
{
|
{
|
||||||
var mapElement = raycastHit.transform.GetComponent<MapElement>();
|
var mapElement = raycastHit.transform.GetComponent<MapElement>();
|
||||||
if (mapElement == null)
|
if (mapElement == null || !mapElement.IsEnabled)
|
||||||
{
|
{
|
||||||
return MapElementType.Empty;
|
return MapElementType.Empty;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public class BreakableWall : MapElement
|
|||||||
|
|
||||||
public override void Hit()
|
public override void Hit()
|
||||||
{
|
{
|
||||||
|
IsEnabled = false;
|
||||||
_boxCollider.isTrigger=true;
|
_boxCollider.isTrigger=true;
|
||||||
_spriteRenderer.enabled = false;
|
_spriteRenderer.enabled = false;
|
||||||
|
|
||||||
@@ -43,7 +44,7 @@ public class BreakableWall : MapElement
|
|||||||
{
|
{
|
||||||
print("Character is dead");
|
print("Character is dead");
|
||||||
}
|
}
|
||||||
|
IsEnabled = true;
|
||||||
_boxCollider.isTrigger = false;
|
_boxCollider.isTrigger = false;
|
||||||
_spriteRenderer.enabled = true;
|
_spriteRenderer.enabled = true;
|
||||||
_needRespawn = false;
|
_needRespawn = false;
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ public class MapElement : MonoBehaviour, IMapElement
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
private MapElementSO _elementSO;
|
private MapElementSO _elementSO;
|
||||||
public MapElementSO ElementSO => _elementSO;
|
public MapElementSO ElementSO => _elementSO;
|
||||||
|
public bool IsEnabled { get; set; } = true;
|
||||||
|
|
||||||
|
|
||||||
public virtual void Hit()
|
public virtual void Hit()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user