x


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));

}

more ▼

asked Jan 16 '12 at 12:36 PM

krides gravatar image

krides
23 6 9 11

(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

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.

more ▼

answered Jan 16 '12 at 04:24 PM

SkaredCreations gravatar image

SkaredCreations
136 2

Okay, actually, I think I failed in explaining what I was trying to accomplish with my code, but never mind, 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.

Jan 16 '12 at 06:09 PM krides
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x984
x955
x441
x149
x87

asked: Jan 16 '12 at 12:36 PM

Seen: 955 times

Last Updated: Jan 16 '12 at 06:09 PM