51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System.Collections;
|
|
using Movement;
|
|
using UnityEngine;
|
|
|
|
namespace Platforms
|
|
{
|
|
public class CollapsingPlatform : MonoBehaviour
|
|
{
|
|
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()
|
|
{
|
|
GetComponent<SpriteRenderer>().color = Color.red;
|
|
yield return new WaitForSeconds(TimeBeforeCollapse);
|
|
ChangeState(false);
|
|
StartCoroutine(Reset());
|
|
}
|
|
|
|
// ReSharper disable once Unity.IncorrectMethodSignature
|
|
private IEnumerator Reset()
|
|
{
|
|
yield return new WaitForSeconds(TimeBeforeReset);
|
|
_onCollision = false;
|
|
GetComponent<SpriteRenderer>().color = Color.white;
|
|
ChangeState(true);
|
|
}
|
|
}
|
|
} |