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; }
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); } }