Home > database >  OnTriggerExit() Doesn't Sees When My Object Is Deleted
OnTriggerExit() Doesn't Sees When My Object Is Deleted

Time:01-20

I Made A Object (Let's say It Cube) Which Deletes Itself In 5 Seconds, It Have A Tag Named Spawned. I Also Made 2 Animations: "DoorOpen" And "DoorClose". I Made A Object Play DoorOpen When Cube Touches It. But When The Object Deletes Itself, It Doesn't Activates OnTriggerExit, Is There Any Other Way Like OnTriggerExit To Play A Animation If Cube Is Deleted? My Trigger Script -

using UnityEngine;

public class DoorOpenTrigger : MonoBehaviour
{
    public Animator doorAnim = null;

    public bool openTrigger = false;
    // public bool closeTrigger = false;

    public string doorOpen = "DoorOpen";
    public string doorClose = "DoorClose";


    void OnTriggerEnter(Collider other) 
    {
        if (other.CompareTag("Spawned"))
        {
            if (openTrigger)
            {
                doorAnim.Play(doorOpen, 0, 0.0f);
                //openTrigger = false;
            }
        }
    }
    void OnTriggerExit(Collider other) 
    {
        if (other.CompareTag("Spawned"))
        {
            if (openTrigger)
            {
                doorAnim.Play(doorClose, 0, 0.0f);
                //openTrigger = false;
            }
        }
    }
}

Btw I am Just A beginner in Unity

CodePudding user response:

I Fixed It With:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DoorOpenTrigger : MonoBehaviour
{
    public Animator doorAnim = null;

    public bool openTrigger = false;
    public bool closeTrigger = false;

    public string doorOpen = "DoorOpen";
    public string doorClose = "DoorClose";
    public GameObject player;
    bool button;
    float delay = 0f;
    

    void Update() 
    {

    }
    

    void OnTriggerEnter(Collider other) 
    {
        if (other.CompareTag("Spawned"))
        {
            if (openTrigger)
            {
                doorAnim.Play(doorOpen, 0, 0.0f);
                openTrigger = false;
                closeTrigger = true;
                delay = player.GetComponent<Spawn>().delay;
                StartCoroutine(Do());
            }

            
        }
    }

    IEnumerator Do()
    {
        yield return new WaitForSeconds(delay);
        doorAnim.Play(doorClose, 0, 0.0f);
        openTrigger = true;
    }

}

(delay Is Time Variable In My Spawn Script To Delete The Cube)

CodePudding user response:

The Trigger is working as intended.

OnTriggerExit wont trigger because your object never moves from inside the collider out.

You will have to either move the object out first, or play around with OnTriggerStay to fix the problem you are having.

  •  Tags:  
  • Related