public override void ActOnce(StateController controller)
    {
        GargoyleData data = (GargoyleData)controller.data;

        data.transform.localScale = new Vector3(data.transform.localScale.x * -1, data.transform.localScale.y, data.transform.localScale.z);
        data.sight.LostSightOfPlayer();

        data.rb.velocity = new Vector2(0, data.rb.velocity.y);
        data.transform.Translate(new Vector3(-0.8f * data.transform.localScale.x, 0.5f, 0));
    }
    public override void ActOnce(StateController controller)
    {
        GargoyleData data = (GargoyleData)controller.data;

        data.velocityBeforeFrozen = data.rb.velocity;

        data.rb.constraints           = RigidbodyConstraints2D.FreezeAll;
        data.gameObject.layer         = 8; // Blockable
        data.playerDamageData.harmful = false;
        data.SetPlatformEffector(true);
    }
    public override void ActOnce(StateController controller)
    {
        GargoyleData data = (GargoyleData)controller.data;

        data.SetPlatformEffector(false);
        data.rb.constraints           = RigidbodyConstraints2D.FreezeRotation;
        data.gameObject.layer         = 11; // Enemy
        data.playerDamageData.harmful = true;

        data.rb.velocity = data.velocityBeforeFrozen;
    }
Beispiel #4
0
    public override void ActOnce(StateController controller)
    {
        GargoyleData data = (GargoyleData)controller.data;

        data.switchingCollider = true;

        data.dashCollider.enabled = false;
        data.idleCollider.enabled = true;

        data.ToggleColliderSwitchCoroutine();
    }
    public override void ActOnce(StateController controller)
    {
        GargoyleData data = (GargoyleData)controller.data;

        data.switchingCollider = true;

        controller.rb.velocity = new Vector2(0, 0);
        controller.rb.AddForce(jumpAngle * data.DashForce.y * controller.rb.mass);
        controller.rb.AddForce(dashAngle * data.DashForce.x * controller.transform.localScale.x * controller.rb.mass);

        data.dashCollider.enabled = true;
        data.idleCollider.enabled = false;
        data.transform.Translate(new Vector3(0.8f * data.transform.localScale.x, 0, 0));

        data.ToggleColliderSwitchCoroutine();
    }
Beispiel #6
0
    public override bool?CheckCollisionEnter(StateController controller, Collision2D other)
    {
        if (mask == (mask | (1 << other.gameObject.layer)))
        {
            GargoyleData data = (GargoyleData)controller.data;
            if (other.relativeVelocity.magnitude > 1)
            {
                data.gargoyleCollideSound.Play();
            }

            if (other.transform.tag == "Breakable")
            {
                data.rb.velocity = data.previousVelocity;

                return(false);
            }
            return(true);
        }
        return(false);
    }
    public override bool?CheckCondition(StateController controller)
    {
        GargoyleData data = (GargoyleData)controller.data;

        if (data != null && data.sight.PlayerInRange())
        {
            RaycastHit2D hit;

            if (data.CanSeeThrughWalls)
            {
                hit = Physics2D.Linecast(controller.transform.position, data.sight.player.transform.position, seeThroughWalls);
            }
            else
            {
                hit = Physics2D.Linecast(controller.transform.position, data.sight.player.transform.position, mask);
            }

            return(hit.collider.tag == "Player");
        }
        return(false);
    }
    public override void ActOnce(StateController controller)
    {
        GargoyleData data = (GargoyleData)controller.data;

        data.frozenColorBlinkData.Start(data.spriteRenderer);
    }