PlatformMaker
PlatformMaker is een platform puzzel game waarbij je blokjes kan oppakken om die vervolgens te plaatsen en daarmee dus je eigen platform maken. De game heeft 35 levels en een levelbuilder. (Over de levelbuilder staat hier onder meer informatie) Er zijn 5 verschillende kleuren blokken ze doen allemaal wat anders. De groene is het standaard blok. Je hebt Blauwe die valt net zo lang totdat het blok iets anders raakt. Het Grijze blok is een on/off blok. Het paarse blok is een blok als je van het blok af gaat. Gaat het blok weg. Het witte blok is een blok dat oneindig valt. Met deze blokken kun je aardig wat verschillende levels mee maken.
Project Info:
Solo Project
Project tijd: Tot 14-02-2021
Engine: Unity
Code Languages: C#
Design Patterns: Singleton & FlyWeight
void Update()
{
if (!placed) //Checks if it's not placed
{
AllowPlacingCheck(); //Checks if it's allowed to be placed
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos.z = 0;
transform.position = mousePos;
if (Input.GetMouseButtonDown(0) && allowPlacing) //Places the block when it's allowed and the left mousebutton is down
{
placed = true;
gameObject.layer = 8;
sr.color = new Color32(255, 255, 255, 255);
if (type == blocktype.fall) rb.bodyType = RigidbodyType2D.Dynamic;
for (int i = 0; i < colliders.Length; i++)
{
colliders[i].isTrigger = false;
}
PlayerController.instance.somethingInHand = false;
} else if (Input.GetMouseButtonDown(1)) //Rotate when right mousebutton is pressed.
{
transform.Rotate(new Vector3(0, 0, 90));
}
}
if (placed && type == blocktype.falling)
{
transform.position = new Vector2(transform.position.x, transform.position.y - .4f * Time.fixedDeltaTime);
}
}
Place Function
LevelBuilder
De Levelbuilder heeft toegang tot alle blokken die je ook in de normale levels hebt. De game slaat de blokken in een lijst op. om op een later moment op te slaan (wanneer jij wilt). Als je een level laad in de levelbuilder plaats hij de blokken in het level en natuurlijk in de lijst. De levelbuilder heeft verschillende opties. Je kan blokken verplaatsen, Draaien, Pickup van maken, Verwijderen en de on/off state aanpassen (als het blok dat toestaat). Deze knoppen zijn ook keybinded.
public void SaveAllData()
{
if (allPlaceableItems.Count > 0)
{
List blockSaveData = new List();
foreach (GameObject obj in allPlaceableItems)
{
LB_BlockPlaceData objBlockData = obj.GetComponent();
BlockSaveData tempData = new BlockSaveData //Creates BlockSaveData for everyBlock
{
position = obj.transform.position,
rotation = objBlockData.rotation,
pickUp = objBlockData.Pickup,
type = objBlockData.data.type.ToString(),
blockNumber = objBlockData.data.blockNumber,
onState = objBlockData.onState
};
blockSaveData.Add(tempData);
}
LB_SaveSystem.Save(blockSaveData, LB_SaveMenu.instance.customFileName + ".json"); //Send all the blockSaveData to SaveSystem.
}
}
public static void Save(List saveData, string _fileName)
{
string allJsonText = "";
string fileName = _fileName;
foreach (BlockSaveData data in saveData)
{
string json = JsonUtility.ToJson(data);
allJsonText += json + "\n";
}
if (Directory.Exists(Application.dataPath + "/CustomLevels")) File.WriteAllText(Application.dataPath + "/CustomLevels/" + fileName, allJsonText);
else
{
Directory.CreateDirectory(Application.dataPath + "/CustomLevels"); //Creates CustomLevels Folder when there isn't one
Save(saveData, _fileName);
}
}