/// <summary> /// Determines the proper facing. /// </summary> /// <param name="tileDirection">Tile direction.</param> private void DetermineProperFacing(Unit.TileDirection tileDirection) { if (tileDirection == Unit.TileDirection.EAST && !_facingRight) { Flip(); _facingRight = true; } else if (tileDirection == Unit.TileDirection.WEST && _facingRight) { Flip(); _facingRight = false; } }
/// <summary> /// Plays the walking animation. /// </summary> /// <param name="unit">Unit.</param> /// <param name="sourceTile">Source tile.</param> /// <param name="targetTile">Target tile.</param> private void PlayWalkingAnimation(Unit unit, Vector3 sourceTile, Vector3 targetTile) { // Only run if there is an animation controller if (unit.GetAnimationController()) { // Get tile direction Unit.TileDirection tileDirection = unit.GetDirectionToTarget( TileMapUtil.WorldCenteredToTileMap(sourceTile, tileMap.TileSize), TileMapUtil.WorldCenteredToTileMap(targetTile, tileMap.TileSize) ); unit.FacedDirection = tileDirection; unit.GetAnimationController().PlayWalkingAnimation(unit); } }
/// <summary> /// Plays the attack animations. /// </summary> /// <returns>The attack animations.</returns> /// <param name="attacker">Attacker.</param> /// <param name="direction">Direction.</param> protected IEnumerator PlayAttackAnimations(Unit attacker, Vector3 direction) { Ability.AbilityType abilityType = attacker.Action.Ability.Type; if (abilityType == Ability.AbilityType.ATTACK || attacker.Action.Ability.Id == AbilityConstants.MEASURED_STRIKE) { //determine which way to swing, dependent on the direction the enemy is Unit.TileDirection facing = attacker.GetDirectionToTarget(direction); UnitAnimationController animationController = attacker.GetAnimationController(); switch (facing) { case Unit.TileDirection.NORTH: animationController.AttackNorth(); break; case Unit.TileDirection.EAST: animationController.AttackEast(); break; case Unit.TileDirection.SOUTH: animationController.AttackSouth(); break; case Unit.TileDirection.WEST: animationController.AttackWest(); break; } } else if (attacker.Action.Ability.Id == AbilityConstants.WHIRLWIND_SLASH) { UnitAnimationController animationController = attacker.GetAnimationController(); animationController.WhirlwindSlash(); } else if (attacker.Action.Ability.Id == AbilityConstants.LEAPING_SLICE) { UnitAnimationController animationController = attacker.GetAnimationController(); animationController.LeapingSlice(); } yield return(null); }
/// <summary> /// Plays the walking animation. /// </summary> /// <param name="unit">Unit.</param> public void PlayWalkingAnimation(Unit unit) { Unit.TileDirection tileDirection = unit.FacedDirection; switch (tileDirection) { case Unit.TileDirection.NORTH: unit.GetAnimationController().WalkNorth(); break; case Unit.TileDirection.EAST: unit.GetAnimationController().WalkEast(); break; case Unit.TileDirection.WEST: unit.GetAnimationController().WalkWest(); break; case Unit.TileDirection.SOUTH: unit.GetAnimationController().WalkSouth(); break; } }