Hey there,
I’m having this weird issue with my building script. After I create about 3 or create one on Z the spawnPos just returns zero and doesn’t allow me to place anymore objects. Idk why the pasted code has these weird indentations. I apologize for the mess.
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Mathf.Infinity))
{
if (hit.distance <= 15f)
{
if (hit.collider.tag == "Ship" || hit.collider.tag == "Buildable")
{
if (buildModelTemp == null)
{
Vector3 spawnPos = Vector3.zero;
Debug.Log(hit.collider.name);
if (hit.normal.x == 1f)
spawnPos = new Vector3(hit.collider.transform.position.x + 5f, hit.collider.transform.position.y, hit.collider.transform.position.z);
else if (hit.normal.x == -1f)
spawnPos = new Vector3(hit.collider.transform.position.x - 5f, hit.collider.transform.position.y, hit.collider.transform.position.z);
else if (hit.normal.z == 1f)
spawnPos = new Vector3(hit.collider.transform.position.x, hit.collider.transform.position.y, hit.collider.transform.position.z + 5.05f);
else if (hit.normal.z == -1f)
spawnPos = new Vector3(hit.collider.transform.position.x, hit.collider.transform.position.y, hit.collider.transform.position.z - 5.05f);
Debug.Log("SP0: " + spawnPos + "HitN: "+hit.normal+"HC "+hit.collider.transform.localScale);
if (spawnPos != Vector3.zero)
{
buildModelTemp = Instantiate(buildModel, spawnPos, Quaternion.identity) as GameObject;
buildModelTemp.GetComponent<BoxCollider>().enabled = false;
}
}
}
else
{
if (buildModelTemp != null)
Destroy(buildModelTemp);
}
}
}
}