Пример #1
0
    //Activate when object exits collider
    void OnTriggerExit2D(Collider2D collider)
    {
        if (collider.gameObject.tag == "Player" && Time.time >= timeCanRetriggerExit)
        {
            if (triggerType == TriggerType.ProximityTrigger)             //If this is an ProximityTrigger, find the type of AI throw the appropriate flag
            {
                AIController AIController = targetObject.GetComponent <AIController>();
                if (AIController != null)
                {
                    AIController.playerIsNear = false;
                }
            }
            if (triggerType == TriggerType.Enable)
            {
                //Reverse the visability of the invisible object
                InvisibleObject invisibleController = targetObject.GetComponent <InvisibleObject>();
                if (invisibleController != null && disableObjectOnExit)
                {
                    invisibleController.startEnabled = !invisibleController.startEnabled;
                    if (anim != null)
                    {
                        anim.SetTrigger("trigger");
                    }
                }
            }
            //If trigger once, disable collision - moved from inside Enable section to allow a one-time trigger for all types of triggers
            if (triggerOnce)
            {
                this.collider2D.enabled = false;
            }

            //Reset retrigger time
            timeCanRetriggerExit = Time.time + 1.0f;
        }
    }
Пример #2
0

        
Пример #3
0
    //Run when the player collides with this trigger
    void OnTriggerEnter2D(Collider2D collider)
    {
        if (collider.gameObject.tag == "Player" &&
            Time.time >= timeCanRetriggerEnter &&
            this.gameObject.tag == "Enemy" &&
            this.gameObject.GetComponent <AIControllerPatrolPig>().m_canSeePlayer)
        {
            //Get HealthController and set isDead flag
            HealthController healthController = targetObject.GetComponent <HealthController>();
            //If the HealthController exists
            if (healthController != null)
            {
                //Set isDead flage
                healthController.isDead = true;
            }
            else
            //Debug.Log("Health Controller is missing on target");

            //If trigger once, disable collision - moved from inside Enable section to allow a one-time trigger for all types of triggers
            if (triggerOnce)
            {
                this.collider2D.enabled = false;
            }
        }

        //If player continue
        else if ((collider.gameObject.tag == "Player") && this.gameObject.tag != "Enemy" && Time.time >= timeCanRetriggerEnter)
        {
            //If type Kill
            if (triggerType == TriggerType.Kill)
            {
                //Get HealthController and set isDead flag
                HealthController healthController = targetObject.GetComponent <HealthController>();
                //If the HealthController exists
                if (healthController != null)
                {
                    //Set isDead flage
                    healthController.isDead = true;
                }
                else
                //Debug.Log("Health Controller is missing on target");

                //If trigger once, disable collision - moved from inside Enable section to allow a one-time trigger for all types of triggers
                if (triggerOnce)
                {
                    this.collider2D.enabled = false;
                }
            }
            //If type Destroy
            else if (triggerType == TriggerType.Destroy)
            {
                //If the timer is not set to infinite (0)
                if (destroyTimer < 0)
                {
                    destroyTimer = 0;
                }

                //Set the this object to be destroyed
                Destroy(targetObject, destroyTimer);

                //If trigger once, disable collision - moved from inside Enable section to allow a one-time trigger for all types of triggers
                if (triggerOnce)
                {
                    this.collider2D.enabled = false;
                }
            }
            //If this is an Enable trigger, find the type of controller and enable it!
            else if (triggerType == TriggerType.Enable)
            {
                AIController AIController = targetObject.GetComponent <AIController>();
                if (AIController != null)
                {
                    AIController.startEnabled = true;
                    if (anim != null)
                    {
                        anim.SetTrigger("trigger");
                    }
                }
                AIControllerPatrolPig AIControllerPatrolPig = targetObject.GetComponent <AIControllerPatrolPig>();
                if (AIControllerPatrolPig != null)
                {
                    AIControllerPatrolPig.m_isStartEnabled = true;
                    if (anim != null)
                    {
                        anim.SetTrigger("trigger");
                    }
                }
                MovingPlatformLinear movingController = targetObject.GetComponent <MovingPlatformLinear>();
                if (movingController != null)
                {
                    movingController.startEnabled = true;
                    if (anim != null)
                    {
                        anim.SetTrigger("trigger");
                    }
                }
                OneWayPlatforms oneWayController = targetObject.GetComponent <OneWayPlatforms>();
                if (oneWayController != null)
                {
                    oneWayController.startEnabled = true;
                    if (anim != null)
                    {
                        anim.SetTrigger("trigger");
                    }
                }
                HazardScript hazardController = targetObject.GetComponent <HazardScript>();
                if (hazardController != null)
                {
                    hazardController.startEnabled = true;
                    if (anim != null)
                    {
                        anim.SetTrigger("trigger");
                    }
                }
                Destructible_Object destructibleController = targetObject.GetComponent <Destructible_Object>();
                if (destructibleController != null)
                {
                    destructibleController.startEnabled = true;
                    if (anim != null)
                    {
                        anim.SetTrigger("trigger");
                    }
                }
                InvisibleObject invisibleController = targetObject.GetComponent <InvisibleObject>();
                if (invisibleController != null)
                {
                    //Reverse the visability of the invisible object
                    invisibleController.startEnabled = !invisibleController.startEnabled;
                    if (anim != null)
                    {
                        anim.SetTrigger("trigger");
                    }
                }

                //If trigger once, disable collision - moved from inside Enable section to allow a one-time trigger for all types of triggers
                if (triggerOnce)
                {
                    this.collider2D.enabled = false;
                }
            }
            else if (triggerType == TriggerType.Sound)  //If this is a sound trigger, then the sound will play - moved from inside Enable section to fix bug
            {
                Play(soundToPlay);

                //If trigger once, disable collision - moved from inside Enable section to allow a one-time trigger for all types of triggers
                if (triggerOnce)
                {
                    this.collider2D.enabled = false;
                }
            }
            else if (triggerType == TriggerType.ProximityTrigger) //If this is an ProximityTrigger, find the type of AI throw the appropriate flag
            {
                AIController AIController = targetObject.GetComponent <AIController>();
                if (AIController != null)
                {
                    AIController.playerIsNear = true;
                }
            }
            //Reset retrigger time
            timeCanRetriggerEnter = Time.time + 1.0f;
        }
    }