So, I’m making a very basic tile based generation system with what is probably an awful method to do so. I’ve just come from JS so this is supposed to be a pretty simple learning experience but I can’t get past line 37.
The error is:
“Cannot implicitly convert type ‘object’ to ‘UnityEngine.Vector3’. An explicit conversion exists (are you missing a cast?)”
using UnityEngine;
using System.Collections;
public class SceneGenerator : MonoBehaviour {
public GameObject tCross;
public GameObject straight;
public GameObject corner;
public ArrayList PossiblePositions = new ArrayList();
public ArrayList PossibleRotations = new ArrayList();
public string lastPlaced;
private GameObject lastPlacedObject;
private GameObject block;
private int blockSelector;
private Vector3 placeholder = new Vector3(0, 0, 0);
// Use this for initialization
void Start () {
firstGen();
}
// Update is called once per frame
void Update () {
}
void firstGen()
{
block = Instantiate(tCross, new Vector3(0, 0, 0), Quaternion.Euler(new Vector3(-90,0,0))) as GameObject;
lastPlaced = "tCross";
findAvailableLocations();
}
void addNewBlock()
{
blockSelector = Random.Range(1, 3);
if (blockSelector != 0)
{
placeholder = PossiblePositions[Random.Range(0, PossiblePositions.Count)];
Instantiate(tCross, placeholder, Quaternion.Euler(-90, 0, 0));
}
}
void findAvailableLocations()
{
if (lastPlaced == "tCross")
{
PossiblePositions.Add(new Vector3(block.transform.position.x + 3.5f, 0f, block.transform.position.z));
PossiblePositions.Add(new Vector3(block.transform.position.x - 3.5f, 0f, block.transform.position.z));
PossiblePositions.Add(new Vector3(block.transform.position.x, 0f, block.transform.position.z + 3.5f));
PossiblePositions.Add(new Vector3(block.transform.position.x, 0f, block.transform.position.z - 3.5f));
Invoke("addNewBlock", 3);
}
}
void printAvailablePositions()
{
for (int x=0; x < PossiblePositions.Count; x++)
{
print(PossiblePositions[x]);
}
}
}