public BlockUnit GetEntryBlock(Vector3 crossingPos, GameDefine.Direction dir, bool correctRoad, bool onRoad) { Vector3 blockPos = crossingPos; blockPos += BlockOffset[(int)dir]; blockPos.y = onRoad ? correctRoad ? 2.6f : 2.4f : -3.0f; BlockUnit unit = GetEntryBlock(correctRoad); unit.transform.position = blockPos; unit.SetVisible(true); unit.crossingPos = crossingPos; unit.direction = dir; unit.color = correctRoad; if (!correctRoad) { // TODO: Refactor, put scaling logic in ObsBlock if (dir != GameDefine.Direction.Forward) { unit.transform.localScale = new Vector3(width, tall, size); } else { unit.transform.localScale = new Vector3(size, tall, width); } } return(unit); }
public BlockUnit GetExtraBlock(Vector3 crossingPos, GameDefine.Direction dir) { // Currently, diamond is the only extra block available Vector3 blockPos = crossingPos; blockPos += BlockOffset[(int)dir] * 1.5f; blockPos.y = 2.6f; BlockUnit unit = Instantiate(diamondPrefab).GetComponent <BlockUnit>(); unit.transform.position = blockPos; unit.SetVisible(true); unit.crossingPos = crossingPos; unit.direction = dir; return(unit); }
private void OnTriggerEnter(Collider other) { // Boom effect Transform boomTrans = transform; boomTrans.eulerAngles = unit.direction == GameDefine.Direction.Forward ? Vector3.zero : unit.direction == GameDefine.Direction.Left ? new Vector3(0, 90f, 0) : new Vector3(0, -90f, 0); MainObjControl.Instant.boomCtrl.ShowBoom(boomTrans); unit.SetVisible(false); // Increment score if (blockType == BlockType.Bonus || player.smashing) { MainCanvas.Instance.inGameScript.IncrScore(); } else { // TODO: GameOver MainCanvas.Instance.lostScript.GameOver(); } if (doExtendRoad) { // Create future path MainObjControl.Instant.roadCtrl.ExtendPath(unit.road, 2); // TODO: Is recollection necessary? MainObjControl.Instant.blockCtrl.FreeBlock(unit); player.levelCounter += 1; if (player.levelCounter == 10) { player.levelUp(); } } }