- Home /
Moving Sphere Camera
OK I have a rolling sphere and I want a camera to follow it and have some nice mouse rotations without losing the spheres rotations. When I put in this though
public Transform sphere;
public float speed = 60f;
...
LateUpdate(){
transform.RotateAround(sphere.position, new Vector3(0,1,0) ,
Input.GetAxis("Mouse X") * speed * Time.deltaTime);
}
the camera will just fall behind since it's not constantly updating the position. Are there any kind of work arounds for what I'm trying to do? I've also tried making a child sphere of this sphere that would have the material renderer but I realized I didn't know what I was doing when it wouldn't even follow the parent.
I also tried making the camera a simple child of the sphere but then it rolls with it.
Answer by robertbu · May 08, 2014 at 04:06 AM
Try this:
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
public Transform sphere;
public float speed = 60f;
private Vector3 dir;
void Start() {
dir = transform.position - sphere.position;
}
void LateUpdate() {
float rot = Input.GetAxis("Mouse X");
if (Mathf.Abs (rot) > .01f) {
Quaternion q = Quaternion.AngleAxis(rot * speed * Time.deltaTime, Vector3.up);
dir = q * dir;
transform.rotation = q * transform.rotation;
}
transform.position = sphere.position + dir;
}
}
Note this code assumes the camera is positioned the right distance and angle in the Editor.
That did the trick, thanks man that was making me crazy for about two hours now.
Your answer
Follow this Question
Related Questions
Camera Orbit Rotation Problem 0 Answers
Clamping RotateAround 1 Answer
Mouse control rotate around player 0 Answers
How to rotate the planar region to alway face the camera? 2 Answers
Orbit 2D camera around circle but keep lookat towards z axis 1 Answer