- Home /
How do I change the rotation of an object after setting transform.up?
I have a building system that aligns the place-able object to whatever surface is being looked at, I would like it if the player could also rotate the place-able object clockwise or counterclockwise relative to that surface. My problem being, to align the place-able object with the target surface, I must set transform.up to the hit.normal. Rotating the object after doing that just resets the rotation to no longer line up with the surface.
public void CheckTurretPlacement(GameObject _placeable)
{
//Debug.Log("Prepared to place turret.");
turretInstantiated = false;
if (Physics.Raycast(raycastFrom.position, raycastFrom.forward, out RaycastHit _hitInfo, placementRange, placementLayMask))
{
checkHit = _hitInfo;
if (checkHit.transform.gameObject.GetComponent<Collider>() != null)
{
if(placeableObject == null)
placeableObject = Instantiate(_placeable, checkHit.point, Quaternion.identity);
if (gridPlacementMode == true)
{
placeableObject.transform.position = new Vector3
(
Mathf.RoundToInt(checkHit.point.x),
Mathf.RoundToInt(checkHit.point.y),
Mathf.RoundToInt(checkHit.point.z)
);
}
else
{
placeableObject.transform.position = new Vector3
(
(checkHit.point.x),
(checkHit.point.y),
(checkHit.point.z)
);
}
// This aligns the turret with the face of whatever object is being looked at
placeableObject.transform.up = checkHit.normal;
if(allowRotate)
{
placeableObject.transform.localRotation = Quaternion.Euler
(
placeableObject.transform.rotation.x,
yRotation,
placeableObject.transform.rotation.z
);
}
// Draw lines to show the incoming "beam" and the reflection of the object's normal.
Debug.DrawLine(raycastFrom.position, checkHit.point, Color.red);
Debug.DrawRay(checkHit.point, checkHit.normal, Color.green);
}
}
}
Here is a video demonstrating the problem, as I understand that I am not very good at communicating the problem.
THE VIDEO (https://youtu.be/AYZIbdVpFL4)
I am fairly new to programming, I've been at it for a few months. I know it probably has to do with local and world space, but I am unsure.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Gameobjects rotation goes haywire, 1 Answer
ECS - System seems to only affect transform on first frame 1 Answer
Positions to rotations of a regular GO 2 Answers
need help regarding rotating arm 0 Answers