public void RunMoveEvents() { PlayerMovementHandler moveHandler = moveHandlerFilter.Data; if (noForceEvents.EntitiesCount > 0) { moveHandler.Stop(); World.Instance.RemoveEntitiesWith <PlayerNoForcesEvent>(); } if (forceEvents.EntitiesCount > 0) { PlayerForceEvent[] events = forceEvents.Components1; for (int i = 0; i < forceEvents.EntitiesCount; i++) { moveHandler.Force(events[i].Force); } World.Instance.RemoveEntitiesWith <PlayerForceEvent>(); } if (repositionEvents.EntitiesCount > 0) { PlayerRepositionEvent moveEvent = repositionEvents.Components1[0]; moveHandler.Reposition(moveEvent.Position); World.Instance.RemoveEntitiesWith <PlayerRepositionEvent>(); } if (kinematicEvents.EntitiesCount > 0) { bool kinematic = kinematicEvents.Components1[0].Kinematic; moveHandler.SetKinematic(kinematic); World.Instance.RemoveEntitiesWith <PlayerKinematicEvent>(); } }
private void OnTriggerEnter(Collider other) { if (other.transform.GetComponent <PlayerMono>() != null) { nextTeleport.OnTeleportingSound.PlaySound(); PlayerForceEvent playerForce = World.Instance.Current.CreateEntityWith <PlayerForceEvent>(); PlayerRepositionEvent playerMovement = World.Instance.Current.CreateEntityWith <PlayerRepositionEvent>(); World.Instance.Current.CreateEntityWith <PlayerNoForcesEvent>(); Vector2 rnd = Random.insideUnitCircle.normalized; Vector3 add = new Vector3(rnd.x, 0, rnd.y); playerMovement.Position = nextTeleport.transform.position; playerMovement.Position += add * settings.TeleportAdditionalDistance; playerForce.Force = add * settings.TeleportForce; } }