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.
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.