Hello all,
I tried to make a house crafting system but I got a problem.
When the rotation in “Y” pos = 0 it works, if the rotation is different then 0 its not working!
Here when it works: Screenshot by Lightshot
Here when it’s not working: Screenshot by Lightshot
When the rotation is different then 0 it’s not working!
Here the code:
Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0.0f));
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 500.0f,HouseItem))
{
Vector3 MyNormal = hit.normal;//hits the first point normal that is colliding.
Debug.Log(hit.transform.gameObject.name);
MyNormal = hit.transform.TransformDirection(MyNormal);//Transforms direction x, y, z from local space to world space.
if(MyNormal == hit.transform.forward)// if the direction == forward - spawning a block in pos "Z" + 1.0f, Istantiate = spawning something.
{
PlacingObject.transform.position = new Vector3(hit.transform.position.x, hit.transform.position.y, hit.transform.position.z + 10.0f);
PlacingObject.transform.eulerAngles = new Vector3(hit.transform.eulerAngles.x, hit.transform.eulerAngles.y, hit.transform.eulerAngles.z);
}
else if(MyNormal == -hit.transform.forward)
{
PlacingObject.transform.position = new Vector3(hit.transform.position.x, hit.transform.position.y, hit.transform.position.z - 10.0f);
PlacingObject.transform.eulerAngles = new Vector3(hit.transform.eulerAngles.x, hit.transform.eulerAngles.y, hit.transform.eulerAngles.z);
}
/*else if(MyNormal == hit.transform.up)
{
PlacingObject.transform.position = new Vector3(hit.transform.position.x, hit.transform.position.y + 10.0f, hit.transform.position.z);
PlacingObject.transform.eulerAngles = new Vector3(hit.transform.eulerAngles.x, hit.transform.eulerAngles.y, hit.transform.eulerAngles.z);
}
else if(MyNormal == -hit.transform.up)
{
PlacingObject.transform.position = new Vector3(hit.transform.position.x, hit.transform.position.y - 10.0f, hit.transform.position.z);
PlacingObject.transform.eulerAngles = new Vector3(hit.transform.eulerAngles.x, hit.transform.eulerAngles.y, hit.transform.eulerAngles.z);
}*/
else if(MyNormal == hit.transform.right)
{
PlacingObject.transform.position = new Vector3(hit.transform.position.x + 10.0f, hit.transform.position.y, hit.transform.position.z);
PlacingObject.transform.eulerAngles = new Vector3(hit.transform.eulerAngles.x, hit.transform.eulerAngles.y, hit.transform.eulerAngles.z);
}
else if(MyNormal == -hit.transform.right)
{
PlacingObject.transform.position = new Vector3(hit.transform.position.x - 10.0f, hit.transform.position.y, hit.transform.position.z);
PlacingObject.transform.eulerAngles = new Vector3(hit.transform.eulerAngles.x, hit.transform.eulerAngles.y, hit.transform.eulerAngles.z);
}
}
Thanks for help!