Пример #1
0
    private void OnTriggerExit2D(Collider2D collider)
    {
        CameraSegmentMember member = collider.GetComponent <CameraSegmentMember>();

        if (member)
        {
            OnMemberExit(member);
        }

        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collider);

        if (!unit)
        {
            return;
        }

        unitsInside.Remove(unit);

        // TODO: do we need to assign null here?
        //PlayerUnitCamera camera = unit.di.camera;
        //if (camera.CameraSegment == this)
        //  camera.CameraSegment = null;

        //camera.RemoveCameraSegment(this);
    }
Пример #2
0
    public void CastRay(Vector2 origin)
    {
        Vector2 rayVector = Vector2.down;
        float   skinWidth = Constants.SKIN_WIDTH;
        float   rayLength = this.rayLength + skinWidth;

        if (debug)
        {
            Debug.DrawLine(origin, origin + (rayVector * rayLength), Color.red);
        }
        RaycastHit2D hit = Physics2D.Raycast(origin, rayVector, rayLength, layerMask);

        if (hit)
        {
            PlayerUnitController player = InteractiveHelpers.GetPlayer(hit.collider);
            if (player)
            {
                float collideDistance = 1f;
                float allowedMove     = player.di.physics.movement.GetAllowedMovement(collideDistance, Dir4.down);
                if (allowedMove < collideDistance)
                {
                    PlayerDamageModule damage = player.di.damage;
                    damage.TakeFullDamage();
                }
            }
        }
    }
Пример #3
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        PlayerUnitController unit           = InteractiveHelpers.GetPlayer(collision);
        PlayerBaseStats      stats          = unit.di.stats;
        PlayerRespawnHandler respawnHandler = unit.mainController.di.respawnHandler;
        bool playSound = false;

        foreach ((SlimeType type, bool acceptsType) in checkpointFor.GetPairEnumerable())
        {
            if (acceptsType && stats.HasType(type))
            {
                bool updated = respawnHandler.SetCheckpoint(type, this);
                if (updated)
                {
                    playSound = true;
                }
                if (!segmentMember.Segment)
                {
                    segmentMember.Segment = unit.di.camera.CameraSegment;
                }
            }
        }
        if (playSound)
        {
            AudioSingleton.PlaySound(AudioSingleton.Instance.clips.checkpoint);
        }
    }
Пример #4
0
    private void OnTriggerEnter2D(Collider2D collider)
    {
        CameraSegmentMember member = collider.GetComponent <CameraSegmentMember>();

        if (member)
        {
            OnMemberEnter(member);
        }

        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collider);

        if (!unit)
        {
            return;
        }

        PlayerUnitCamera playerCamera = unit.di.camera;

        if (playerCamera.CameraSegment == null)
        {
            unitsInside.Add(unit);
            playerCamera.CameraSegment = this;
        }
        else
        {
            CheckUnitForSegmentEnter(unit);
        }
    }
Пример #5
0
    private void OnTriggerExit2D(Collider2D collision)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision);

        if (unit)
        {
            playersInRange.Remove(unit);
        }
    }
Пример #6
0
    private void OnTriggerExit2D(Collider2D collision)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision);

        if (unit && interactionPredicate.CanInteract(unit))
        {
            RemovePressingUnit(unit);
        }
    }
Пример #7
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision);

        if (unit)
        {
            SceneManager.LoadScene(sceneName);
        }
    }
Пример #8
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision);

        if (unit)
        {
            source.Play();
        }
    }
Пример #9
0
    private void OnTriggerEnter2D(Collider2D collider)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collider);

        if (unit && predicate.CanInteract(unit))
        {
            GameplayManager.instance.fsm.PushTutorial(data);
            Destroy(gameObject);
        }
    }
Пример #10
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision);

        if (!unit)
        {
            return;
        }
        unit.di.poison.AddPoisonField(this);
    }
Пример #11
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision);

        if (!unit)
        {
            return;
        }
        unit.di.damage.TakeFullDamage(Vector2.zero);
    }
Пример #12
0
    public bool MergeWith(Collider2D collider)
    {
        PlayerUnitController otherController = InteractiveHelpers.GetPlayer(collider);

        if (otherController)
        {
            OnUnitCollision(otherController);
            return(true);
        }
        return(false);
    }
Пример #13
0
    private void OnTriggerStay2D(Collider2D collider)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collider);

        if (!unit || unitsInside.Contains(unit))
        {
            return;
        }

        CheckUnitForSegmentEnter(unit);
    }
Пример #14
0
    private void OnTriggerExit2D(Collider2D collider)
    {
        PushBlock block = InteractiveHelpers.GetBlock(collider);

        if (block)
        {
            isPressed = false;
            spriteRenderer.enabled = true;
            pressEmitter.Emit(isPressed);
            //trigger.CallTriggerAction(isPressed);
            AudioSingleton.PlaySound(AudioSingleton.Instance.clips.button);
        }
    }
Пример #15
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        EnemyDamagable damagable = InteractiveHelpers.GetEnemy(collision);

        if (damagable)
        {
            damagable.TakeDamageFrom(boxCollider, controller);
            if (damagable.HasRecoilAfterDamage())
            {
                controller.di.stateMachine.SetRecoilState(damagable.GetRecoilAfterDamage());
            }
        }
    }
Пример #16
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision);

        if (!unit)
        {
            return;
        }
        if (unit.di.vulnerability.IsVulnerable())
        {
            float   randomSign      = Random.Range(0, 2) == 1 ? 1 : -1;
            Vector2 randomPushForce = TileHelpers.TileToWorld(new Vector2(randomSign * pushTileForce.x, pushTileForce.y));
            unit.di.damage.TakeFullDamage(randomPushForce);
        }
    }
Пример #17
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision);

        if (unit && interactionPredicate.CanInteract(unit))
        {
            if (!isPressed)
            {
                isPressed = true;
                //trigger.CallTriggerAction(isPressed);
                pressEmitter.Emit(isPressed);
                AudioSingleton.PlaySound(AudioSingleton.Instance.clips.button);
            }
            pressing.Add(unit);
            spriteRenderer.enabled = false;
            if (unit.di.stats.OnChange != null)
            {
                unit.di.stats.OnChange += OnPressingAssemblyStatsChange;
            }
        }
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        bool isFalling = physics.velocity.Y < 0;

        if (isFalling)
        {
            EnemyDamagable damagable = InteractiveHelpers.GetEnemy(collision);
            if (damagable)
            {
                damagable.TakeDamageFrom(boxCollider, controller);
                if (damagable.HasRecoilAfterDamage())
                {
                    controller.di.stateMachine.SetRecoilState(damagable.GetRecoilAfterDamage());
                }
                else
                {
                    Vector2 playerRecoil = RecoilHelpers.GetRecoilFromTo(controller.transform, controller.transform, tileRecoilOnHit);
                    Debug.Log(playerRecoil);
                    physics.velocity.Value = playerRecoil;
                    //controller.StateMachine.SetRecoilState(playerRecoil);
                }
            }
        }
    }