Untitled
unknown
csharp
2 years ago
4.1 kB
18
Indexable
using UnityEngine; using System; using System.Collections; using System.Collections.Generic; using UnityEngine.EventSystems; public class GameController : MonoBehaviour { private CubePos nowCube = new CubePos(0, 1, 0); public float cubeChangePlaceSpeed = 0.5f; public Transform cubeToPlace; private float camMoveToYPosition, camMoveSpeed = 2f; public GameObject cubeToCreate, allCubes; public GameObject[] canvasStartPage; private Rigidbody allCubesRb; public Color[] bgColors; private bool IsLose, firstCube; private List<Vector3> allCubesPositions = new List<Vector3> { new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(-1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(0, 0, -1), new Vector3(1, 0, 1), new Vector3(-1, 0, -1), new Vector3(-1, 0, 1), new Vector3(1, 0, -1), }; private int prevCountMaxHorizontal; private Transform mainCam; private Coroutine showCubePlace; private void Start() { mainCam = Camera.main.transform; camMoveToYPosition = 5.9f + nowCube.y - 1f; allCubesRb = allCubes.GetComponent<Rigidbody>(); showCubePlace = StartCoroutine(ShowCubePlace()); } private void Update() { if((Input.GetMouseButtonDown(0) || Input.touchCount > 0) && cubeToPlace != null && allCubes != null && !EventSystem.current.IsPointerOverGameObject()) { #if !UNITY_EDITOR if (Input.GetTouch(0).phase != TouchPhase.Began) return; #endif if (!firstCube) { firstCube = true; foreach (GameObject obj in canvasStartPage) Destroy(obj); } GameObject newCube = Instantiate( cubeToCreate, cubeToPlace.position, Quaternion.identity) as GameObject; newCube.transform.SetParent(allCubes.transform); nowCube.setVector(cubeToPlace.position); allCubesPositions.Add(nowCube.getVector()); allCubesRb.isKinematic = true; allCubesRb.isKinematic = false; SpawnPositions(); MoveCameraChangeBg(); } if(!IsLose && allCubesRb.velocity.magnitude > 0.1f) { Destroy(cubeToPlace.gameObject); IsLose = true; StopCoroutine(showCubePlace); } mainCam.localPosition = Vector3.MoveTowards(mainCam.localPosition, new Vector3(mainCam.localPosition.x, camMoveToYPosition, mainCam.localPosition.z), camMoveSpeed * Time.deltaTime); } IEnumerator ShowCubePlace() { while(true) { SpawnPositions(); yield return new WaitForSeconds(cubeChangePlaceSpeed); } } private void SpawnPositions() { List<Vector3> positions = new List<Vector3>(); if(IsPositionEmpty(new Vector3(nowCube.x + 1, nowCube.y, nowCube.z)) && nowCube.x + 1 != cubeToPlace.position.x) positions.Add(new Vector3(nowCube.x + 1, nowCube.y, nowCube.z)); if (IsPositionEmpty(new Vector3(nowCube.x - 1, nowCube.y, nowCube.z)) && nowCube.x - 1 != cubeToPlace.position.x) positions.Add(new Vector3(nowCube.x - 1, nowCube.y, nowCube.z)); if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y + 1, nowCube.z)) && nowCube.y + 1 != cubeToPlace.position.y) positions.Add(new Vector3(nowCube.x, nowCube.y + 1, nowCube.z)); if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y - 1, nowCube.z)) && nowCube.y - 1 != cubeToPlace.position.y) positions.Add(new Vector3(nowCube.x, nowCube.y - 1, nowCube.z)); if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y, nowCube.z + 1)) && nowCube.z + 1 != cubeToPlace.position.z) positions.Add(new Vector3(nowCube.x,
Editor is loading...