- Home /
Vertical camera movement script being EXTREMELY wierd
I just want it to, as you move the mouse up, move the camera forward, closer to the player, move it above the player, and rotate it down toward the player, and do the opposite when moving the mouse down
using UnityEngine; using System.Collections;
public class CameraController : MonoBehaviour {
public int Sensitivity;
private float MouseY;
private float MouseYSet;
private float XRot;
private float YPos;
private float ZPos;
public GameObject CameraTarget;
void Start () {
}
void Update () {
// Rotation controls
MouseY += Input.GetAxisRaw ("Mouse Y");
transform.localRotation = Quaternion.Euler (Mathf.Clamp (transform.localRotation.x, 0, 90), transform.localRotation.y, transform.localRotation.z);
transform.localPosition = new Vector3 (transform.localPosition.x, Mathf.Clamp (transform.localPosition.y, CameraTarget.transform.localPosition.y, CameraTarget.transform.localPosition.y + 50), Mathf.Clamp (transform.localPosition.z, CameraTarget.transform.localPosition.z, CameraTarget.transform.localPosition.z + 50));
if (MouseYSet != MouseY)
{
transform.Rotate (new Vector3 (-(MouseY - MouseYSet) * Sensitivity * 10, 0, 0));
transform.Translate (new Vector3 (0, -(MouseY - MouseYSet) * Sensitivity * 10, -(MouseY- MouseYSet) * Sensitivity * 10));
MouseYSet = MouseY;
}
}
}
That's some complex stuff in there. What's does it do at the moment with this code. You want it to move above the player etc. but I presume you want it to look at the player as well.
Is it doing that?
You might be better changing the XYZ position and using transform.LookAt(Player) to control the rotation.
It vibrates and barely moves, not sure whats causing it, can you make a player and put this in the script? @$$anonymous$$mmpies
I have absolutely no idea what's going on with this. I put it on the scene I created last time for the "fly off" problem you had and the camera appears to have no relationship with the player at all.
I think you might be trying too much all at once.
Get the player transform.position and transform.rotation and set a start point that's the same rotation as the player and a bit further back and upwards. You could even add an empty GameObject to the Player for this point. $$anonymous$$akes no difference if it's a few meters behind the Player as long as it's a child of the Player.
In fact you could set lots of empty gameObjects and from one to another so the camera can't wander off.
then if you move the mouse upwards it tries to move to a higher empty camera slot until it get's to the top/edge slot.
If you want persist with the maths solution that's fine but take it back to bare bones and add a bit at a time.
Or go with the array of empty gameObjects surrounding the player as an alternative.
Your answer
Follow this Question
Related Questions
wierd thing happening 1 Answer
Controls Are Acting Wierd? 0 Answers
Problems comparing float with a Mathf.RoundToInt() version of itself 1 Answer
wierd light on trees? 0 Answers
Coroutines Bug? Unity 4.5 1 Answer