Exemplo n.º 1
0
        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>();
            }
        }
Exemplo n.º 2
0
        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;
            }
        }