// Update is called once per frame void Update() { UnitState = UnitState.NAND(Enums.UnitStateEnum.Moving); // Apply landing if (UnitState.HasFlag(Enums.UnitStateEnum.Landing)) { UnitState |= Enums.UnitStateEnum.Grounded; UnitState = UnitState.NAND(Enums.UnitStateEnum.Landing); } // Zero vertical velocity when we're on the ground if (UnitState.HasFlag(Enums.UnitStateEnum.Grounded)) { rigidBody.velocity = new Vector2(rigidBody.velocity.x, 0); } TakeAction(); MotionDamping(); UpdateUnitState(); var scale = new Vector3(Mathf.Abs(transform.localScale.x), transform.localScale.y, transform.localScale.z); if (UnitState.HasFlag(Enums.UnitStateEnum.FacingLeft)) { scale.x *= -1; } transform.localScale = scale; UpdateAnimations(); }
public static string StateSummary(this Enums.UnitStateEnum self) { var result = new StringBuilder("Debug State Info\n"); foreach (var value in Enum.GetValues(typeof(Enums.UnitStateEnum))) { //Debug.Log(String.Format("{0}: {1}", Enum.GetName(typeof(Enums.UnitStateEnum), value), self.HasFlag((Enums.UnitStateEnum)value))); if (self.HasFlag((Enums.UnitStateEnum)value)) { result.AppendLine(Enum.GetName(typeof(Enums.UnitStateEnum), value)); } } return(result.ToString()); }