So I am working on a little game where you can place turrets and deffend points and I have this small issue. I can place turrets everywhere, even on walls and I dont want that. How can I make the turrets not placeable on walls ?
Here is the script:
public GameObject blueprintGreen;
public GameObject blueprintRed;
public GameObject turret;
private GameObject moveableBlue;
private bool blueprintOn;
[SerializeField]
private Vector3 offset;
[SerializeField]
private float rotation;
[SerializeField]
private LayerMask mask;
// Start is called before the first frame update
void Start()
{
blueprintOn = false;
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.Q) && blueprintOn == false)
{
BluePrint();
}
if (Input.GetKeyDown(KeyCode.Mouse0) && blueprintOn == true)
{
BuildTurret();
Destroy(moveableBlue);
blueprintOn = false;
rotation = 0f;
}
if(Input.GetKey(KeyCode.Z) && blueprintOn == true)
{
rotation -= 2.5f;
}
if(Input.GetKey(KeyCode.X) && blueprintOn == true)
{
rotation += 2.5f;
}
if (blueprintOn)
{
MoveBluePrint();
}
}
void BluePrint()
{
moveableBlue = Instantiate(blueprintGreen);
blueprintOn = true;
}
void MoveBluePrint()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit rayCast;
if(Physics.Raycast(ray, out rayCast, mask))
{
moveableBlue.transform.position = rayCast.point + offset;
//moveableBlue.transform.rotation = Quaternion.FromToRotation(Vector3.up, rayCast.normal);
if (blueprintOn == true) moveableBlue.transform.rotation = Quaternion.Euler(0f, rotation, 0f);
}
}
void BuildTurret()
{
Instantiate(turret, moveableBlue.transform.position, moveableBlue.transform.rotation);
}