- Home /
Rotating the parent makes the whole object move
What I want to do: have a sphere on which force is applied when W is pressed. But in order to add force forward, I have to add a parent that won't rotate when force is added, so the parent's axis will stay at the right place.
Also, this is like a third person view, the camera is behind the sphere.
But, if I add force to the sphere and it moves, I also have to update the parent's position, I do like this:
transform.position = child.transform.position - child.transform.localPosition;
The problem is, when I right click I want to rotate the sphere and camera 90 degrees. I do it like this: camera.transform.RotateAround(transform.position,new Vector3(0,1,0),-90); transform.parent.Rotate(0,90,0);
However when I click and rotate the entire thing, the sphere moves out of the scene, without me doing anything but the rotation.
What am I doing wrong?
Answer by andrew-lukasik · Jun 13, 2014 at 03:20 PM
Sir, use this:
public Vector3 inputDir = Vector3.zero;
public Quaternion rotateInputDir = Quaternion.Euler(0f,0f,0f);//< initial rotation
private Vector3 myPrevPos = Vector3.zero;
void Start () {
myPrevPos = transform.position;
}
void Update () {
inputDir = new Vector3(Input.GetAxis("Horizontal"),0f,Input.GetAxis("Vertical"));
rigidbody.AddForce( rotateInputDir * inputDir * 10f );
if (Input.GetMouseButtonDown(1)) {
rotateInputDir *= Quaternion.Euler(0f,90f,0f);
Camera.main.transform.RotateAround( transform.position , Vector3.up , 90f );
}
Camera.main.transform.position += transform.position-myPrevPos;
myPrevPos = transform.position;
}
PS: using this don't parent here these objects with each other
Your answer
Follow this Question
Related Questions
Child versus Parent rotations 3 Answers
force child rotation to zero? 2 Answers
realizing AddTorqueAtPosition - how to calculate forces 0 Answers