private static List <float> GetAngles(TileMapPart newObjectBorder)
    {
        List <float> angles = new List <float>();

        if (newObjectBorder.Top)
        {
            angles.Add(SideAngles[Top]);
        }

        if (newObjectBorder.Right)
        {
            angles.Add(SideAngles[Right]);
        }

        if (newObjectBorder.Down)
        {
            angles.Add(SideAngles[Down]);
        }

        if (newObjectBorder.Left)
        {
            angles.Add(SideAngles[Left]);
        }

        return(angles);
    }
    public static float GetRotation(string side, TileMapPart mapPart)
    {
        var sideAngle = SideAngles[side];

        var newObjectAngels = GetAngles(mapPart);

        var random = Random.Range(0, newObjectAngels.Count - 1);

        var randomAngle = newObjectAngels[random];

        return(-(180 - (randomAngle - sideAngle)));
    }
Beispiel #3
0
    private Vector3 HandleRotation(Int2 nextPosition, Vector3 currentRotation, TileMapPart mapPart)
    {
        var currentPosition = CalculateCurrentPosition();

        if (nextPosition.X > currentPosition.X) //going to right
        {
            currentRotation.y = SideManager.GetRotation(SideManager.Right, mapPart);
        }
        else if (nextPosition.X < currentPosition.X)//going to left
        {
            currentRotation.y = SideManager.GetRotation(SideManager.Left, mapPart);
        }
        else if (nextPosition.Y > currentPosition.Y)//going to top
        {
            currentRotation.y = SideManager.GetRotation(SideManager.Top, mapPart);
        }
        else if (nextPosition.Y < currentPosition.Y)//going to down
        {
            currentRotation.y = SideManager.GetRotation(SideManager.Down, mapPart);
        }
        return(currentRotation);
    }