- Home /
RotateAround in local coordinates?
Hey. So there’s an object that is rotated around some point in space. Both the point and the object are children to another object. The parent moves and rotates itself. Now, I want the parent’s rotation to stop messing around with the child’s RotateAround. How do I accomplish that, as it seems that there’s no RotateAround local overload available?
This is how the child is being rotated:
function FixedUpdate(){
if (doRotateArrow)
{
this.transform.parent.RotateAround(rotationCenter.position, Vector3(1,0,0), 200 * Time.deltaTime);
counterToggled = true;
if (fixedCounter >= 900) {
doRotateArrow = false;
counterToggled = false;
this.transform.parent.localEulerAngles.x = 0;
this.transform.parent.localEulerAngles.y = 180;
this.transform.parent.localEulerAngles.z = 180;
this.transform.parent.localPosition.x = 0;
this.transform.parent.localPosition.y = 1.05;
this.transform.parent.localPosition.z = 0;
fixedCounter = 0;
RearrangeArrow();
}
}
if (counterToggled)
fixedCounter++;
}
And this is how the parent is being rotated:
void Update (){
float mousex = Input.mousePosition.x;
xtilt = ((mousex - Screen.width/2) / (Screen.width/2)) * 2f;
transform.rotation = Quaternion.AngleAxis(xtilt,new Vector3(0,-1,0));
}
Answer by SkaredCreations · Jan 16, 2012 at 04:24 PM
I see in your "child" script that you're rotating the parent and not the child (transform.parent.RotateAround) and also you're rotating the parent itself in its own script. About rotating in local system, transform.Rotate already applies to local system by default if you don't specify Space.World as third parameter (e.g. transform.Rotate(Vector3.right 200 Time.deltaTime) should rotate the object around its X axis.
Okay, actually, I think I failed in explaining what I was trying to accomplish with my code, but never $$anonymous$$d, I have already figured that out. I just had to replace my existing rotation direction with a local one. Like this:
transform.parent.RotateAround (rotationCenter.position, transform.parent.transform.right, 200* Time.deltaTime);
This works perfectly. Answering your other question, the “parent” refers to a median empty object that is child to the global parent that is being rotated by mouse and parent to this.