//Return the appropriate array based off the direction public override FrameData[] this[PlayerDirection.FacingDirections direction] { get { switch (direction) { case PlayerDirection.FacingDirections.North: return(North); case PlayerDirection.FacingDirections.NorthEast: return(NorthEast); case PlayerDirection.FacingDirections.East: return(East); case PlayerDirection.FacingDirections.SouthEast: return(SouthEast); default: case PlayerDirection.FacingDirections.South: return(South); case PlayerDirection.FacingDirections.SouthWest: return(SouthWest); case PlayerDirection.FacingDirections.West: return(West); case PlayerDirection.FacingDirections.NorthWest: return(NorthWest); } } }
private void TransitionToMap(int mapID, PlayerDirection.FacingDirections playerDirection) { EnablePlayerColliderTrigger(); // TODO: Start fade out MapFade.Create(true, false); DontDestroyOnLoad(MapFade.Instance); SetCameraFollow(false); LoadMap(mapID); // Fade in MapFade.Instance.FadeIn = false; MapFade.Instance.DestroyOnFinish = true; MapFade.Instance.ResetFade(true); SetCameraFollow(true); // Get the new map Map map = Map.Instance; Rect mapBounds = map.Bounds.DivideBy(32); // Note: The code below doesn't work but will work when we've stopped using scenes to load map data PlayerCharacter player = PlayerCharacter.Instance; // Used to move the player up one step after transitioning to a new map float speed = PlayerCharacter.Instance.BaseMoveSpeed; player.Direction.SetDirection(playerDirection); // Set player's position to the beginning of the next map switch (playerDirection) { case PlayerDirection.FacingDirections.West: player.transform.position = new Vector3(mapBounds.xMax - speed, player.transform.position.y); break; case PlayerDirection.FacingDirections.East: player.transform.position = new Vector3(mapBounds.xMin + speed, player.transform.position.y); break; case PlayerDirection.FacingDirections.South: player.transform.position = new Vector3(player.transform.position.x, mapBounds.yMax - speed); break; case PlayerDirection.FacingDirections.North: player.transform.position = new Vector3(player.transform.position.x, mapBounds.yMin + speed); break; } }
public void SetData(AnimationData newAnimation, PlayerDirection.FacingDirections direction) { if (newAnimation == null) { Debug.LogWarning("null AnimationData passed to SetData. Not playing animation"); return; } if (newAnimation[direction] == null || newAnimation[direction].Length == 0) { Debug.LogWarning("animation " + newAnimation.AnimName + " has no direction data for " + direction + ". Not playing animation"); return; } AnimationPlaying = newAnimation; Frames = AnimationPlaying[direction]; ResetAnim(); }
/// <summary> /// Plays an animation by name. /// </summary> /// <param name="animName">The name of the animation to play.</param> //// <param name="directionFacing">The direction of the animation to play.</param> public void PlayAnimation(string animName, PlayerDirection.FacingDirections directionFacing) { if (AnimDict.ContainsKey(animName) == false) { Debug.LogWarning("No animation with name: " + animName + " can be found!"); return; } //PlayerDirection.FacingDirections directionFacing = // (playerDirection != null) ? playerDirection.CurDirection : PlayerDirection.FacingDirections.South; //Don't reset the current animation if its the same and the direction it's facing is the same //if (CurrentAnim != null && CurrentAnim.AnimName == animName && PrevDirection == directionFacing) return; PreviousAnim = CurrentAnim; CurrentAnim = AnimDict[animName]; //PrevDirection = directionFacing; AnimPlayer.SetData(CurrentAnim, directionFacing); }
// The player has collided with the edge of the map private void OnCollisionEnter2D(Collision2D collision) { Vector2 contactPoint = collision.contacts.First <ContactPoint2D>().point; Map map = Map.Instance; Rect mapBounds = map.Bounds.DivideBy(32); int newMapID = 0; PlayerDirection.FacingDirections direction = PlayerDirection.FacingDirections.East; if (contactPoint.x <= mapBounds.xMin) { newMapID = map.LeftMapID; direction = PlayerDirection.FacingDirections.West; } else if (contactPoint.x >= mapBounds.xMax) { newMapID = map.RightMapID; direction = PlayerDirection.FacingDirections.East; } else if (contactPoint.y <= mapBounds.yMin) { newMapID = map.BottomMapID; direction = PlayerDirection.FacingDirections.South; } else if (contactPoint.y >= mapBounds.yMax) { newMapID = map.TopMapID; direction = PlayerDirection.FacingDirections.North; } Debug.Log(newMapID); // Check if we should transition to a new map if (newMapID > 0) { TransitionToMap(newMapID, direction); } }
public override FrameData[] this[PlayerDirection.FacingDirections direction] { //Always return these sprites regardless of direction get { return(Frames); } }
protected void PlayerDirectionChangedEvent(PlayerDirection.FacingDirections newDirection) { //Debug.Log("NEW DIRECTION: " + newDirection); StateMachine.AnimManager.PlayAnimation(AnimToPlay, newDirection); }
/// <summary> /// Gets a FrameData array from a direction. /// </summary> /// <param name="direction"></param> /// <returns></returns> public abstract FrameData[] this[PlayerDirection.FacingDirections direction] { get; }