Hello.
In my project I want to implement a wall hide/resize mechanic which I already did, but it is very error prone. CUrrently it’s working on Triggers. But once player changes goes up or down and it’s still in collision they won’t run again.
I want to use Pyshics2D.Raycast on player update so it can activate building hiding/resizing, and that works well. Thing is I can’t return the building to default state since the Raycast is no longer there and I am losing reference to this building.
Is there any method for when Raycast loses contact with this building?
Example of how it works in video below.
https://clipchamp.com/watch/gtNXD87jMfp
Code I am using right now with OnTriggerExit/Enter
using System.Collections.Generic;
using UnityEngine;
public class HideOverPlayerComponents : MonoBehaviour
{
public delegate void OnCollisionToHideFloor(bool value, GameObject gameObject, float playerZ);
public static event OnCollisionToHideFloor CollisiionToHideFloor;
private void OnTriggerEnter2D(Collider2D collider)
{
if (collider.gameObject.CompareTag("BuildingHider"))
{
if (transform.position.z >= collider.transform.position.z)
{
// Debug.Log("Collider Enter: " + collider.transform.parent.transform.parent.name + " : " + collider.transform.parent.name, collider.gameObject);
BuildingHider buildingHider = collider.transform.root.GetComponent<BuildingHider>();
CollisiionToHideFloor?.Invoke(false, collider.transform.parent.transform.parent.gameObject, transform.position.z);
}
}
}
private void OnTriggerExit2D(Collider2D collider)
{
if (collider.gameObject.CompareTag("BuildingHider"))
{
if (transform.position.z >= collider.transform.position.z)
{
// Debug.Log("Collider Exit: " + collider.transform.parent.transform.parent.name + " : " + collider.transform.parent.name, collider.gameObject);
BuildingHider buildingHider = collider.transform.root.GetComponent<BuildingHider>();
if (buildingHider.floatList.Contains(collider.transform.position.z))
{
CollisiionToHideFloor?.Invoke(true, collider.transform.parent.transform.parent.gameObject, transform.position.z);
}
}
}
}
}```