public static string ToString(FacingDirectionType facingDirection)
        {
            string direction = string.Empty;

            switch (facingDirection)
            {
            case FacingDirectionType.North:
                direction = "North";
                break;

            case FacingDirectionType.South:
                direction = "South";
                break;

            case FacingDirectionType.East:
                direction = "East";
                break;

            case FacingDirectionType.West:
                direction = "West";
                break;
            }

            return(direction);
        }
예제 #2
0
 void GetDirectionInput()
 {
     if (!isMoving)
     {
         if (Input.GetKey(KeyCode.W))
         {
             facingDirection = FacingDirectionType.Up;
             StartCoroutine(MoveATile(FacingDirectionType.Up, walkingSpeed));
         }
         else if (Input.GetKey(KeyCode.S))
         {
             facingDirection = FacingDirectionType.Down;
             StartCoroutine(MoveATile(FacingDirectionType.Down, walkingSpeed));
         }
         else if (Input.GetKey(KeyCode.A))
         {
             facingDirection = FacingDirectionType.Left;
             StartCoroutine(MoveATile(FacingDirectionType.Left, walkingSpeed));
         }
         else if (Input.GetKey(KeyCode.D))
         {
             facingDirection = FacingDirectionType.Right;
             StartCoroutine(MoveATile(FacingDirectionType.Right, walkingSpeed));
         }
     }
 }
        public static FacingDirectionType FromString(string facingDirection)
        {
            FacingDirectionType direction = FacingDirectionType.North;

            if (facingDirection == "West")
            {
                direction = FacingDirectionType.West;
            }
            else if (facingDirection == "East")
            {
                direction = FacingDirectionType.East;
            }
            else if (facingDirection == "South")
            {
                direction = FacingDirectionType.South;
            }

            return(direction);
        }
예제 #4
0
    IEnumerator MoveATile(FacingDirectionType direction, float speed)
    {
        // Keep track of whether we're moving or not.
        isMoving = true;

        // Convert the speed to time, based on a forced FPS of 60.
        speed = speed/60.0f;
        // Find how many pixels to move each tick. (speed 0-60 = 1, 61-120 = 2, etc.)
        float speedInPixels = Mathf.Floor(speed) + 1;

        // Set the movement vector.
        Vector3 moveVector = new Vector3();

        rightFootFirst = !rightFootFirst;
        switch (direction)
        {
            case (FacingDirectionType.Up) :
                moveVector = Vector3.up;
                if (rightFootFirst)
                {
                    sprite.PlayOnce("walkUp_Right");
                }
                else
                {
                    sprite.PlayOnce("walkUp_Left");
                }
                break;
            case (FacingDirectionType.Down):
                moveVector = Vector3.down;
                if (rightFootFirst)
                {
                    sprite.PlayOnce("walkDown_Right");
                }
                else
                {
                    sprite.PlayOnce("walkDown_Left");
                }
                break;
            case (FacingDirectionType.Left):
                moveVector = Vector3.left;
                if (rightFootFirst)
                {
                    sprite.PlayOnce("walkLeft_Right");
                }
                else
                {
                    sprite.PlayOnce("walkLeft_Left");
                }
                break;
            case (FacingDirectionType.Right):
                moveVector = Vector3.right;
                if (rightFootFirst)
                {
                    sprite.PlayOnce("walkRight_Right");
                }
                else
                {
                    sprite.PlayOnce("walkRight_Left");
                }
                break;
        }
        // Save the current position, so we know when to stop.
        Vector3 originalPosition = transform.position;

        // Start the move loop.
        while (true) {
            if (Mathf.Abs(transform.position.x - originalPosition.x) < 16.0f &&
                Mathf.Abs(transform.position.y - originalPosition.y) < 16.0f)
            {
                //Move the required number of pixels.
                transform.Translate(moveVector * speedInPixels);
            }
            else
            {
                isMoving = false;
                break;
            }
            // Wait for the tick to happen.
            yield return new WaitForSeconds((1 / 60.0f)); // / speed); // 60 fps.
        }
    }
예제 #5
0
 // Use this for initialization
 void Start()
 {
     sprite = GetComponent<OTAnimatingSprite>();
     facingDirection = FacingDirectionType.Left;
 }