enter code hereI have written a script which tilts the player’s model (independently of the player’s transfrom around a point using) using transform.rotateAround().
What’s missing is that I want, at a certain point, to set back the model where it was in the beginning (but relative to the player’s transform). I thought this was pretty simple but setting:
model.transform.rotation = Quaternion.Euler(...)
model.transform.position = transform.position(...) + new Vector3(...)
is behaving strangely,
any ideas on how to reset back the position after using transform.RotateAround() ?
Help would be greatly appreciated, thanks in advance.
=====================================================
Edit
Below I’ve pasted my code:
private void HandleTilting()
{
// print(model.transform.localEulerAngles.x + ", " + model.transform.localEulerAngles.y + ", " + model.transform.localEulerAngles.z);
//print(originalModPos);
turn = currModelRotY - prevModelRotY;
if (turn > 0 && model.transform.localEulerAngles.z < 10) model.transform.localRotation = Quaternion.Euler(model.transform.localRotation.x, model.transform.localRotation.y, 359);
if (turn < 0 && model.transform.localEulerAngles.z > 350) model.transform.localRotation = Quaternion.Euler(model.transform.localRotation.x, model.transform.localRotation.y, 1);
//right titling
if (turn < 0)
{
rightAngle = 2 - ((2 * model.transform.localEulerAngles.z) / 40);
model.transform.RotateAround(transform.position + new Vector3(0, 5, 0), transform.forward, rightAngle);
}
else if (turn > 0)
{
leftAngle = 2 - (2 * (360 - model.transform.localEulerAngles.z)) / 40;
model.transform.RotateAround(transform.position + new Vector3(0, 5, 0), transform.forward, -leftAngle);
}
if (turn == 0 && model.transform.localEulerAngles.z <= 90 && model.transform.localEulerAngles.z >= 0)
{
rightAngle = (2 * model.transform.localEulerAngles.z) / 40;
model.transform.RotateAround(transform.position + new Vector3(0, 5, 0), transform.forward, -rightAngle);
}
else if (turn == 0 && model.transform.localEulerAngles.z >= 270 && model.transform.localEulerAngles.z <= 360)
{
leftAngle = (2 * (360 - model.transform.localEulerAngles.z)) / 40;
model.transform.RotateAround(transform.position + new Vector3(0, 5, 0), transform.forward, leftAngle);
}
}
It has to be refined but tilting left when the button is pressed and going smoothly back works perfectly, and so does vice versa but when combining them together …
well I know what the problem is I just need to set the local z rotation to 360 when tilting left and 0 when tilting right but for some reason the following code doesn’t set the rotation
if (turn > 0 && model.transform.localEulerAngles.z < 10) model.transform.localRotation = Quaternion.Euler(model.transform.localRotation.x, model.transform.localRotation.y, 359);
if (turn < 0 && model.transform.localEulerAngles.z > 350) model.transform.localRotation = Quaternion.Euler(model.transform.localRotation.x, model.transform.localRotation.y, 1);
================
Thanks for the swift reply btw.
I edited my answer to include a possible solution for what you're trying to do - take a look at that.
– aldonaletto