public void OnPhysicsEvent(PhysicsEvent e) { if (e.type == PhysicsEvent.EXTERNAL_FORCE) { int id = e.uid; Vector2 force = e.vector; bool hasForce = !(force.x == 0 && force.y == 0); if (!_sharedData.externalVelocity.ContainsKey(id)) { if (hasForce) { _sharedData.externalVelocity[id] = force; } } else { if (hasForce) { _sharedData.externalVelocity[id] = force; } else { _sharedData.externalVelocity.Remove(id); } } } else if (e.type == PhysicsEvent.MOVE_BY) { this.gameObject.transform.Translate(e.vector); } }
private void DispatchPhysicsEvent(GameObject toObj, Vector2 force) { PhysicsEvent e = new PhysicsEvent(PhysicsEvent.EXTERNAL_FORCE, gameObject.GetInstanceID(), force); toObj.SendMessage("OnPhysicsEvent", e, SendMessageOptions.DontRequireReceiver); }
private void DispatchPhysicsEvent(GameObject toObj, Vector2 force) { PhysicsEvent e = new PhysicsEvent(PhysicsEvent.MOVE_BY, gameObject.GetInstanceID(), force); foreach (GameObject go in _collisionObjects) { go.SendMessage("OnPhysicsEvent", e, SendMessageOptions.DontRequireReceiver); } // toObj.SendMessage("OnPhysicsEvent", e, SendMessageOptions.DontRequireReceiver); }