HATEBIN
>
using System.Collections; using System.Collections.Generic; using UnityEngine; namespace TallyHo { public class CharDropDown : MonoBehaviour { [Header("Components")] private BoxCollider2D box2D; [Header("Calculations")] private float oneWayPlatDropInterval = 0.25f; private IEnumerator oneWayPlatDropCoroutine; private bool oneWayPlatDropActive = false; private CompositeCollider2D tilemapCollider2D; private float yPosOnDrop = 0.0f; public float minDropToRenableCol = 0.8f; private void Awake() { box2D = GetComponent
(); } void Start() { tilemapCollider2D = GameObject.FindGameObjectWithTag("OneWayPlatform").GetComponent
(); } public void DropDown() { yPosOnDrop = transform.position.y; if (oneWayPlatDropActive) StopCoroutine(oneWayPlatDropCoroutine); oneWayPlatDropCoroutine = OneWayPlatDropCoroutine(); if (!tilemapCollider2D) tilemapCollider2D = GameObject.FindGameObjectWithTag("OneWayPlatform").GetComponent
(); StartCoroutine(oneWayPlatDropCoroutine); } private IEnumerator OneWayPlatDropCoroutine() { oneWayPlatDropActive = true; IgnoreOneWayPlatCollision(true, tilemapCollider2D); float timer = 0; while (timer < oneWayPlatDropInterval && transform.position.y > yPosOnDrop - minDropToRenableCol) { timer += Time.deltaTime; yield return null; } IgnoreOneWayPlatCollision(false, tilemapCollider2D); oneWayPlatDropActive = false; } void IgnoreOneWayPlatCollision(bool ignore, Collider2D collider2D) { if (collider2D) { Physics2D.IgnoreCollision(box2D, collider2D, ignore); } else { Debug.LogWarning("Don't have the tilemapCollider2D!"); } } } }