CollisionEventDispatcher SetUpCollisionEventDispatcher(Rigidbody rigidbody)
        {
            CollisionEventDispatcher dispatcher = rigidbody.gameObject.AddComponent <CollisionEventDispatcher>();

            dispatcher.OnCollisionEntered += DispatchOnCollisionEnter;
            dispatcher.OnCollisionStayed  += DispatchOnCollisionStay;
            dispatcher.OnCollisionExited  += DispatchOnCollisionExit;

            return(dispatcher);
        }
Beispiel #2
0
        /// <summary>
        /// 添加触发器脚本
        /// </summary>
        public static void AddCollisionEvent(GameObject go, LuaTable ed)
        {
            CollisionEventDispatcher dispatcher = go.GetComponent <CollisionEventDispatcher>();

            if (dispatcher == null)
            {
                dispatcher = go.AddComponent <CollisionEventDispatcher>();
            }
            dispatcher.ed = ed;
        }
        void SetUpCollisionEventDispatchers(IReadOnlyCollection <Rigidbody> rigidbodies)
        {
            dispatchers = new CollisionEventDispatcher[rigidbodies.Count];

            int i = 0;

            foreach (Rigidbody rigidbody in rigidbodies)
            {
                CollisionEventDispatcher dispatcher = SetUpCollisionEventDispatcher(rigidbody);

                dispatchers[i] = dispatcher;
                i++;
            }
        }
 void Start()
 {
     GameObject gameControl = GameObject.FindGameObjectWithTag("GameController");
     eventDispatcher = gameControl.GetComponent<CollisionEventDispatcher>();
 }
Beispiel #5
0
 void DispatchOnCollisionExit(Collision collision, CollisionEventDispatcher dispatcher)
 {
     OnCollisionExit?.Invoke(collision, bones[dispatcher]);
 }