2022-02-25 13:32:01 +03:00
|
|
|
using System.Collections;
|
|
|
|
using Movement;
|
2022-02-23 13:47:46 +03:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace Platforms
|
|
|
|
{
|
|
|
|
public class CollapsingPlatform : MonoBehaviour
|
|
|
|
{
|
2022-02-25 13:32:01 +03:00
|
|
|
private const float TimeBeforeCollapse = 2.0f;
|
|
|
|
private const float TimeBeforeReset = 4.0f;
|
|
|
|
|
|
|
|
private CollisionChecker _collidingTriggerCheck;
|
|
|
|
|
|
|
|
private bool _onCollision;
|
|
|
|
|
|
|
|
private void Awake()
|
|
|
|
{
|
|
|
|
_collidingTriggerCheck = GetComponentInChildren<CollisionChecker>();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void Update()
|
|
|
|
{
|
|
|
|
if (!_collidingTriggerCheck.IsCollided || _onCollision) return;
|
|
|
|
_onCollision = true;
|
|
|
|
StartCoroutine(Collapse());
|
|
|
|
}
|
|
|
|
|
|
|
|
private void ChangeState(bool state)
|
|
|
|
{
|
|
|
|
GetComponent<SpriteRenderer>().enabled = state;
|
|
|
|
GetComponent<Collider2D>().enabled = state;
|
|
|
|
}
|
|
|
|
|
|
|
|
private IEnumerator Collapse()
|
|
|
|
{
|
2022-02-25 21:05:28 +03:00
|
|
|
GetComponent<SpriteRenderer>().color = Color.red;
|
2022-02-25 13:32:01 +03:00
|
|
|
yield return new WaitForSeconds(TimeBeforeCollapse);
|
|
|
|
ChangeState(false);
|
|
|
|
StartCoroutine(Reset());
|
|
|
|
}
|
|
|
|
|
2022-02-25 14:12:49 +03:00
|
|
|
// ReSharper disable once Unity.IncorrectMethodSignature
|
2022-02-25 13:32:01 +03:00
|
|
|
private IEnumerator Reset()
|
|
|
|
{
|
|
|
|
yield return new WaitForSeconds(TimeBeforeReset);
|
|
|
|
_onCollision = false;
|
2022-02-25 21:05:28 +03:00
|
|
|
GetComponent<SpriteRenderer>().color = Color.white;
|
2022-02-25 13:32:01 +03:00
|
|
|
ChangeState(true);
|
|
|
|
}
|
2022-02-23 13:47:46 +03:00
|
|
|
}
|
|
|
|
}
|