コード例 #1
0
    void FixedUpdate()
    {
        PlayerMover.StatePair c = pm.currentState;
        SpriteRenderer        spr = GetComponent <SpriteRenderer>();
        float a, b;

        realScale = transform.localScale;


        switch (c.state)
        {
        case PlayerMover.PState.Dash:
            a = rotFromVec(pm.dashDirection, 0);


            if (backDash)
            {
                a += 200;
            }
            break;

        case PlayerMover.PState.Burnout:

            if (pm.grounded)
            {
                a = 0;
            }
            else
            {
                int direction = 1;
                if (pm.FacingLeft)
                {
                    direction = -1;
                }
                float secPerRot = 0.6f;
                float t         = Time.time % secPerRot;
                a = t * 360 * direction / secPerRot;
            }

            break;

        case PlayerMover.PState.Finisher:
            a = rotFromVec(rb.velocity, -90);
            break;

        default:
            a = 0;
            break;
        }



        if (pm.FacingLeft)
        {
            b = -Mathf.Abs(realScale.y); a += 180;
        }
        else
        {
            b = Mathf.Abs(realScale.y);
        }

        //transform.rotation= Quaternion.Euler(0, 0, a);
        transform.localRotation = Quaternion.Euler(0, 0, a);
        transform.localScale    = new Vector3(realScale.x, b, realScale.z);

        Color tmp = spr.color;

        if (GetComponent <IFrames>().invincible())
        {
            float secPerCycle = 0.2f;
            float t           = Time.time % secPerCycle;
            float per         = Mathf.Abs(t - (secPerCycle / 2)) / (secPerCycle / 2);
            //print(per);
            //spr.color = new Color(spr.color.r, spr.color.g, spr.color.b, 255 - (130 * per));
            tmp.a = 0.5f - 0.3f * per;
        }
        else if (c.state == PlayerMover.PState.Parry)
        {
            float secPerCycle = 0.05f;
            float t           = Time.time % secPerCycle;
            float per         = Mathf.Abs(t - (secPerCycle / 2)) / (secPerCycle / 2);
            //print(per);
            //spr.color = new Color(spr.color.r, spr.color.g, spr.color.b, 255 - (130 * per));
            tmp.a = 1f - 0.8f * per;
        }
        else
        {
            tmp.a = 1f;
        }

        spr.color = tmp;
    }
コード例 #2
0
    public void ReadState()
    {
        PlayerMover.StatePair c = pm.currentState;
        if (c.state == PlayerMover.PState.Free)
        {
            if (pm.grounded)
            {
                ani.SetInteger("State", (int)AnimationState.Ground);
            }
            else
            {
                ani.SetInteger("State", (int)AnimationState.Air);
            }
        }
        else if (c.state == PlayerMover.PState.Delay)
        {
            if (c.action == PlayerMover.ExecState.Jump)
            {
                ani.SetInteger("State", (int)AnimationState.JumpSquat);
            }
            else if (c.action == PlayerMover.ExecState.hitLag)
            {
                ani.SetInteger("State", (int)AnimationState.Hitlag);
            }
            else if (c.action == PlayerMover.ExecState.Death)
            {
                ani.SetInteger("State", (int)AnimationState.Hitlag);
            }
            else if (c.action == PlayerMover.ExecState.mapStart)
            {
                ani.SetInteger("State", (int)AnimationState.Ground);
            }
            else if (c.action == PlayerMover.ExecState.LandLag)
            {
                ani.SetInteger("State", (int)AnimationState.LandLag);
            }
            else if (c.action == PlayerMover.ExecState.Grabbed)
            {
                ani.SetInteger("State", (int)AnimationState.Hitstun);
            }
            else
            {
                ani.SetInteger("State", (int)AnimationState.Unknown);
            }
        }
        else if (c.state == PlayerMover.PState.CeilingHold)
        {
            ani.SetInteger("State", (int)AnimationState.Ceiling);
        }
        else if (c.state == PlayerMover.PState.Dash)
        {
            ani.SetInteger("State", (int)AnimationState.Dash);
            backDash = false;
            if (pm.FacingLeft && pm.dashDirection.x > 0)
            {
                backDash = true;
            }
            else if (!pm.FacingLeft && pm.dashDirection.x < 0)
            {
                backDash = true;
            }

            ani.SetBool("DashBack", backDash);
        }
        else if (c.state == PlayerMover.PState.Stall)
        {
            ani.SetInteger("State", (int)AnimationState.Stall);
        }
        else if (c.state == PlayerMover.PState.Hitstun)
        {
            ani.SetInteger("State", (int)AnimationState.Hitstun);
        }
        else if (c.state == PlayerMover.PState.AirAttack)
        {
            ani.SetInteger("State", (int)AnimationState.AirAttack);
        }
        else if (c.state == PlayerMover.PState.GroundAttack)
        {
            ani.SetInteger("State", (int)AnimationState.GroundAttack);
        }
        else if (c.state == PlayerMover.PState.Finisher)
        {
            ani.SetInteger("State", (int)AnimationState.Finisher);
        }
        else if (c.state == PlayerMover.PState.Burnout)
        {
            ani.SetInteger("State", (int)AnimationState.Burnout);
        }
        else if (c.state == PlayerMover.PState.Flip)
        {
            ani.SetInteger("State", (int)AnimationState.Flip);
        }
        else if (c.state == PlayerMover.PState.Shoot)
        {
            ani.SetInteger("State", (int)AnimationState.Shoot);
        }
        else if (c.state == PlayerMover.PState.ShootWall)
        {
            ani.SetInteger("State", (int)AnimationState.Shoot);
        }
        else if (c.state == PlayerMover.PState.Parry)
        {
            ani.SetInteger("State", (int)AnimationState.Parry);
        }
        else
        {
            ani.SetInteger("State", (int)AnimationState.Unknown);
        }
    }