예제 #1
0
    public static void ChangeWalkOnPlane(this ICubeWalker walker, Vector3 movementDirection)
    {
        Vector3 tilePosition = GridSystem.System.GetGridCoords(walker.transform.position + movementDirection.normalized * GridSystem.System.GridUnitSize, false);
        int     count        = GridSystem.System.Count - 1;

        if (tilePosition.x > count)
        {
            walker.CurrentWalkOnSide = CubeSide.right;
        }
        else if (tilePosition.x < 0)
        {
            walker.CurrentWalkOnSide = CubeSide.left;
        }
        else if (tilePosition.y > count)
        {
            walker.CurrentWalkOnSide = CubeSide.top;
        }
        else if (tilePosition.y < 0)
        {
            walker.CurrentWalkOnSide = CubeSide.bottom;
        }
        else if (tilePosition.z > count)
        {
            walker.CurrentWalkOnSide = CubeSide.front;
        }
        else if (tilePosition.z < 0)
        {
            walker.CurrentWalkOnSide = CubeSide.back;
        }
    }
예제 #2
0
 public static Vector3 GetGridPosition(this ICubeWalker walker)
 {
     try {
         return(GridSystem.System.ToGridPosition(GridSystem.System.ToGridTilePosition(walker.transform.position, walker.CurrentWalkOnSide)));
     }
     catch {
         return(walker.GetGridPosition());
     }
 }
예제 #3
0
 public static Vector3 GetWalkOnPlaneNormal(this ICubeWalker walker)
 {
     return(GridSystem.System.GetPlaneNormal(walker.CurrentWalkOnSide));
 }