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); }
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); }