1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using System;
- using UnityEngine;
- using Object = UnityEngine.Object;
- namespace UnityStandardAssets.Utility
- {
- public class ActivateTrigger : MonoBehaviour
- {
-
-
- public enum Mode
- {
- Trigger = 0,
- Replace = 1,
- Activate = 2,
- Enable = 3,
- Animate = 4,
- Deactivate = 5
- }
- public Mode action = Mode.Activate;
- public Object target;
- 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();
- }
- }
- }
|