Answer the question
In order to leave comments, you need to log in
Assets\Scripts\GameController.cs(90,20): error CS0117: 'Camera' does not contain a definition for 'main'?
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 cubeChangePlaseSpeed = 0.5f;
public Transform cubeToPlase;
private float camMoveToYPosition, camMoveSpeed = 2f;
public GameObject cubeToCreate, allCubes;
public GameObject[] canvasStartPage;
private Rigidbody allCubesRB;
public Color[] bgcolors;
private Color toCameraColor;
private bool IsLoose, firstCube;
private List<Vector3> allCubePosition = new List<Vector3>
{
new Vector3(0, 0, 0),
new Vector3(1, 0, 0),
new Vector3(-1, 0, 0),
new Vector3(0, 0, 1),
new Vector3(0, 0, -1),
new Vector3(0, 1, 0),
new Vector3(1, 0, 1),
new Vector3(-1, 0, -1),
new Vector3(1, 0, -1),
new Vector3(-1, 0, 1),
};
private int prevCountMaxHorizontal = 0;
private Coroutine showCubePlase;
private Transform mainCam;
private void Start()
{
toCameraColor = Camera.main.backgroundColor;
mainCam = Camera.main.transform;
camMoveToYPosition = 8f + nowCube.y - 1f;
allCubesRB = allCubes.GetComponent<Rigidbody>();
showCubePlase = StartCoroutine(ShowCubePlase());
}
private void Update()
{
if ((Input.GetMouseButtonDown(0) || Input.touchCount > 0) && cubeToPlase != null && !EventSystem.current.IsPointerOverGameObject())
{
#if !UNITY_EDITOR
if (Input.GetTouch(0).phashe != TouchPhase.Began)
return;
#endif
if (!firstCube)
{
firstCube = true;
foreach (GameObject obj in canvasStartPage)
Destroy(obj);
}
GameObject newCube = Instantiate(cubeToCreate, cubeToPlase.position, Quaternion.identity) as GameObject;
newCube.transform.SetParent(allCubes.transform);
nowCube.setVector(cubeToPlase.position);
allCubePosition.Add(nowCube.getVector());
allCubesRB.isKinematic = true;
allCubesRB.isKinematic = false;
SpawnPositions();
MoveCameraCangeBG();
}
if (!IsLoose && allCubesRB.velocity.magnitude > 0.1f)
{
Destroy(cubeToPlase.gameObject);
IsLoose = true;
StopCoroutine(showCubePlase);
}
mainCam.localPosition = Vector3.MoveTowards(mainCam.localPosition, new Vector3(mainCam.localPosition.x, camMoveToYPosition, mainCam.localPosition.z), camMoveSpeed * Time.deltaTime);
if (Camera.main.backgroundColor != toCameraColor)
Camera.main.backgroundColor = Color.Lerp(Camera.main.backgroundColor, toCameraColor, Time.deltaTime / 1.5f);
}
IEnumerator ShowCubePlase()
{
while (true)
{
SpawnPositions();
yield return new WaitForSeconds(cubeChangePlaseSpeed);
}
}
private void SpawnPositions()
{
List<Vector3> position = new List<Vector3>();
if (IsPositionEmpty(new Vector3(nowCube.x + 1, nowCube.y, nowCube.z))
&& nowCube.x + 1 != cubeToPlase.position.x)
position.Add(new Vector3(nowCube.x + 1, nowCube.y, nowCube.z));
if (IsPositionEmpty(new Vector3(nowCube.x - 1, nowCube.y, nowCube.z))
&& nowCube.x - 1 != cubeToPlase.position.x)
position.Add(new Vector3(nowCube.x - 1, nowCube.y, nowCube.z));
if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y + 1, nowCube.z))
&& nowCube.y + 1 != cubeToPlase.position.y)
position.Add(new Vector3(nowCube.x, nowCube.y + 1, nowCube.z));
if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y - 1, nowCube.z))
&& nowCube.y - 1 != cubeToPlase.position.y)
position.Add(new Vector3(nowCube.x, nowCube.y - 1, nowCube.z));
if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y, nowCube.z + 1))
&& nowCube.z + 1 != cubeToPlase.position.z)
position.Add(new Vector3(nowCube.x, nowCube.y, nowCube.z + 1));
if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y, nowCube.z - 1))
&& nowCube.z - 1 != cubeToPlase.position.z)
position.Add(new Vector3(nowCube.x, nowCube.y, nowCube.z - 1));
if (position.Count > 1)
cubeToPlase.position = position[UnityEngine.Random.Range(0, position.Count)];
else if (position.Count == 0)
IsLoose = true;
else
cubeToPlase.position = position[0];
}
private bool IsPositionEmpty(Vector3 targetPos)
{
if (targetPos.y == 0)
return false;
foreach (Vector3 pos in allCubePosition)
{
if (pos.x == targetPos.x && pos.y == targetPos.y && pos.z == targetPos.z)
return false;
}
return true;
}
private void MoveCameraCangeBG()
{
int maxX = 0, maxY = 0, maxZ = 0, maxHor;
foreach (Vector3 pos in allCubePosition)
{
if (Mathf.Abs(Convert.ToInt32(pos.x)) > maxX)
maxX = Convert.ToInt32(pos.x);
if (Convert.ToInt32(pos.y) > maxY)
maxY = Convert.ToInt32(pos.x);
if (Mathf.Abs(Convert.ToInt32(pos.z)) > maxZ)
maxZ = Convert.ToInt32(pos.z);
}
camMoveToYPosition = 8f + nowCube.y - 1f;
maxHor = maxX > maxZ ? maxX : maxZ;
if (maxHor % 3 == 0)
{
mainCam.localPosition += new Vector3(0, 0, 2.5f);
prevCountMaxHorizontal = maxHor;
}
if (maxY >= 10)
toCameraColor = bgcolors[3];
else if (maxY >= 7)
toCameraColor = bgcolors[2];
else if (maxY >= 5)
toCameraColor = bgcolors[1];
else if (maxY >= 2)
toCameraColor = bgcolors[0];
}
}
struct CubePos
{
public int x, y, z;
public CubePos(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
public Vector3 getVector()
{
return new Vector3(x, y, z);
}
public void setVector(Vector3 pos)
{
x = Convert.ToInt32(pos.x);
y = Convert.ToInt32(pos.y);
z = Convert.ToInt32(pos.z);
}
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question