CollisionEventDispatcher SetUpCollisionEventDispatcher(Rigidbody rigidbody) { CollisionEventDispatcher dispatcher = rigidbody.gameObject.AddComponent <CollisionEventDispatcher>(); dispatcher.OnCollisionEntered += DispatchOnCollisionEnter; dispatcher.OnCollisionStayed += DispatchOnCollisionStay; dispatcher.OnCollisionExited += DispatchOnCollisionExit; return(dispatcher); }
/// <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>(); }
void DispatchOnCollisionExit(Collision collision, CollisionEventDispatcher dispatcher) { OnCollisionExit?.Invoke(collision, bones[dispatcher]); }