| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | using System;using UnityEngine;using Object = UnityEngine.Object;namespace UnityStandardAssets.Utility{    public class ActivateTrigger : MonoBehaviour    {        // A multi-purpose script which causes an action to occur when        // a trigger collider is entered.        public enum Mode        {            Trigger = 0,    // Just broadcast the action on to the target            Replace = 1,    // replace target with source            Activate = 2,   // Activate the target GameObject            Enable = 3,     // Enable a component            Animate = 4,    // Start animation on target            Deactivate = 5  // Decativate target GameObject        }        public Mode action = Mode.Activate;         // The action to accomplish        public Object target;                       // The game object to affect. If none, the trigger work on this game object        public GameObject source;        public int triggerCount = 1;        public bool repeatTrigger = false;        private void DoActivateTrigger()        {            triggerCount--;            if (triggerCount == 0 || repeatTrigger)            {                Object currentTarget = target ?? gameObject;                Behaviour targetBehaviour = currentTarget as Behaviour;                GameObject targetGameObject = currentTarget as GameObject;                if (targetBehaviour != null)                {                    targetGameObject = targetBehaviour.gameObject;                }                switch (action)                {                    case Mode.Trigger:                        if (targetGameObject != null)                        {                            targetGameObject.BroadcastMessage("DoActivateTrigger");                        }                        break;                    case Mode.Replace:                        if (source != null)                        {                            if (targetGameObject != null)                            {                                Instantiate(source, targetGameObject.transform.position,                                            targetGameObject.transform.rotation);                                Destroy(targetGameObject);                            }                        }                        break;                    case Mode.Activate:                        if (targetGameObject != null)                        {                            targetGameObject.SetActive(true);                        }                        break;                    case Mode.Enable:                        if (targetBehaviour != null)                        {                            targetBehaviour.enabled = true;                        }                        break;                    case Mode.Animate:                        if (targetGameObject != null)                        {                            targetGameObject.GetComponent<Animation>().Play();                        }                        break;                    case Mode.Deactivate:                        if (targetGameObject != null)                        {                            targetGameObject.SetActive(false);                        }                        break;                }            }        }        private void OnTriggerEnter(Collider other)        {            DoActivateTrigger();        }    }}
 |