Exemplo n.º 1
0
    public void Interact(PlayerCharacterLogic playerCharacter)
    {
        dragCount = touchedDragedCount;

        CoroutineT.WhileBefore
        (
            () => damageEntity.Attack(playerCharacter),
            () => TrapClosed,
            damagedTime
        ).Start(playerCharacter);
    }
Exemplo n.º 2
0
 public void CoroutineDamaging(Collider2D collider2D, float damage, DamageType damageType, float time, UnityAction action = null)
 {
     CoroutineT.WhileBefore
     (
         () =>
     {
         if (CanGetDamage)
         {
             Damage(damage, damageType);
             action?.Invoke();
         }
     },
         () => this.collider2D.IsTouching(collider2D),
         time
     ).Start(this);
 }
Exemplo n.º 3
0
    public void Interact(Transform playerTransform, Rigidbody2D playerRigitBody, PlayerControl control)
    {
        if (!Locked)
        {
            Locked = true;
            Hitted = true;

            OnHitted.Invoke();

            CoroutineT.WhileBefore
            (
                () => control.LockTransformBy(transform, time),
                () => gameObject.activeInHierarchy && Hitted,
                time,
                () => Locked = false
            ).Start(control);
        }
    }
Exemplo n.º 4
0
    private void MoveBack()
    {
        hookCollider.enabled   = false;
        hookRigidBody.velocity = Vector2.zero;

        CoroutineT.WhileBefore
        (
            () => hookTransform.position = Vector3.MoveTowards(hookPosition, position, speed),
            () => distanceHook.magnitude > 0.1f,
            0,
            () =>
        {
            hookTransform.localEulerAngles = Vector3.zero;

            if (hookComponent.Hitted)
            {
                gameObject.SetActive(false);
            }

            movingObject.Speed = movingObject.Speed.Change(y: ySpeed);
        }
        ).Start(this);
    }
Exemplo n.º 5
0
    public void Interact(Transform playerTransform, Rigidbody2D playerRigitBody, PlayerControl control)
    {
        playerRigitBody.gravityScale = 0;

        effectClosing.Play();

        CoroutineT.WhileBefore
        (
            () =>
        {
            control.BlockPlayerAt(damagedTime);
            control.LockTransformBy(transform, damagedTime);
        },
            () => TrapClosed,
            damagedTime + Time.fixedDeltaTime,
            () =>
        {
            playerRigitBody.gravityScale = control.WallGravityScale;
            playerRigitBody.velocity     = Vector2.zero;
            effectClosing.Stop();
            Dispose();
        }
        ).Start(control);
    }