Esempio n. 1
0
    public static Enums.Directions4WayCompressing Compress8to4Directions(Enums.Directions4WayCompressing direction)
    {
        //convert 8-way to 4-way direction for animation purposes
        if ((int)direction >= 4)
        {
            direction -= 4;
        }

        return(direction);
    }
Esempio n. 2
0
    public void Move(Enums.Directions4WayCompressing direction)
    {
        Vector3 translation = Vector3.zero;

        switch (direction)
        {
        case Enums.Directions4WayCompressing.Up:
            translation = Vector3.up;
            break;

        case Enums.Directions4WayCompressing.UpRight:
            translation = Vector3.up + Vector3.right;
            break;

        case Enums.Directions4WayCompressing.Right:

            translation = Vector3.right;
            break;

        case Enums.Directions4WayCompressing.DownRight:
            translation = Vector3.down + Vector3.right;
            break;

        case Enums.Directions4WayCompressing.Down:
            translation = Vector3.down;
            break;

        case Enums.Directions4WayCompressing.DownLeft:
            translation = Vector3.down + Vector3.left;
            break;

        case Enums.Directions4WayCompressing.Left:
            translation = Vector3.left;
            break;

        case Enums.Directions4WayCompressing.UpLeft:
            translation = Vector3.up + Vector3.left;
            break;

        default:
            translation = Vector3.zero;
            break;
        }

        //todo - attempting to make direction sticky (pressing left, then up/left should keep direction facing left)
        // (doesnt work properly) - make it work if we have time
        var adjustedDirection = direction;

        Enums.Directions4WayCompressing tempPositive = (((int)direction + 1) > 7) ? (Enums.Directions4WayCompressing) 0 : direction;
        Enums.Directions4WayCompressing tempNegative = (((int)direction - 1) < 0) ? (Enums.Directions4WayCompressing) 7 : direction;
        if (_previousDirection == tempPositive)
        {
            adjustedDirection = tempPositive;
        }
        else if (_previousDirection == tempNegative)
        {
            adjustedDirection = tempNegative;
        }

        if (adjustedDirection != direction)
        {
            _previousDirection = direction;
        }
        adjustedDirection = Helpers.Compress8to4Directions(adjustedDirection);

        //set animation
        _animator.SetFloat("direction", (int)adjustedDirection);
        _animator.SetInteger("direction_int", (int)adjustedDirection);
        _animator.SetBool("moving", true);
        _moving = true;

        transform.Translate(translation.normalized * _speed * Time.deltaTime);
    }