- Home /
Broken code, need help tonight if possible please
So if you add this to a player, and move around, it kinda flashes between where its suppoosed to be and somewhere else. i want it to make the camera move between a top down view and a behind view, depending on the mouse y axis. so if the mouse moves down, it will become top down. but only move as much as the mouse moved, hence the delta i added in.
using UnityEngine;
using System.Collections;
public class CameraController : MonoBehaviour {
public float Sensitivity;
public float MaxDistance;
public float MaxAngle;
private float MouseY;
private float MouseYSet;
private float CameraAngleX;
private float PlayerHead;
private float PlayerBack;
private float CameraY;
private float CameraZ;
public GameObject CameraTarget;
void Start () {
PlayerHead = CameraTarget.transform.position.y + CameraTarget.transform.lossyScale.y / 2;
PlayerBack = CameraTarget.transform.position.z - CameraTarget.transform.lossyScale.z / 2;
}
void Update () {
// Look controls
MouseY -= Input.GetAxisRaw ("Mouse Y");
CameraAngleX = Mathf.Clamp (CameraAngleX + (MouseY - MouseYSet) * Sensitivity * 10, -MaxAngle, MaxAngle);
CameraY = Mathf.Clamp (CameraY + (MouseY - MouseYSet) * Sensitivity * 10, CameraTarget.transform.localPosition.y, PlayerHead + MaxDistance);
CameraZ = Mathf.Clamp (CameraZ + (MouseY - MouseYSet) * Sensitivity * 10, PlayerBack - MaxDistance, CameraTarget.transform.localPosition.z);
if (MouseY != 0)
{
transform.localRotation = Quaternion.Euler (CameraAngleX, transform.localRotation.y, transform.localRotation.z);
transform.localPosition = new Vector3 (transform.localPosition.x, CameraY, CameraZ);
MouseYSet = MouseY;
}
}
}
Playerhead is supposed to equal to the point right at the top of the entire player, playerback the same but with his back.
i changed it because i thought it was the problem.
i just cahanged al of them to localposition and theyre still acting up
using UnityEngine;
using System.Collections;
public class CameraController : $$anonymous$$onoBehaviour {
public float Sensitivity;
public float $$anonymous$$axDistance;
public float $$anonymous$$axAngle;
private float $$anonymous$$ouseY;
private float $$anonymous$$ouseYSet;
private float CameraAngleX;
private float PlayerHead;
private float PlayerBack;
private float CameraY;
private float CameraZ;
public GameObject CameraTarget;
void Start () {
PlayerHead = CameraTarget.transform.localPosition.y + CameraTarget.transform.lossyScale.y / 2;
PlayerBack = CameraTarget.transform.localPosition.z - CameraTarget.transform.lossyScale.z / 2;
}
void Update () {
// Look controls
$$anonymous$$ouseY -= Input.GetAxisRaw ("$$anonymous$$ouse Y");
CameraAngleX = $$anonymous$$athf.Clamp (CameraAngleX + ($$anonymous$$ouseY - $$anonymous$$ouseYSet) * Sensitivity * 10, -$$anonymous$$axAngle, $$anonymous$$axAngle);
CameraY = $$anonymous$$athf.Clamp (CameraY + ($$anonymous$$ouseY - $$anonymous$$ouseYSet) * Sensitivity * 10, CameraTarget.transform.localPosition.y, PlayerHead + $$anonymous$$axDistance);
CameraZ = $$anonymous$$athf.Clamp (CameraZ + ($$anonymous$$ouseY - $$anonymous$$ouseYSet) * Sensitivity * 10, PlayerBack - $$anonymous$$axDistance, CameraTarget.transform.localPosition.z);
if ($$anonymous$$ouseY != 0)
{s
transform.localRotation = Quaternion.Euler (CameraAngleX, transform.localRotation.y, transform.localRotation.z);
transform.localPosition = new Vector3 (transform.localPosition.x, CameraY, CameraZ);
$$anonymous$$ouseYSet = $$anonymous$$ouseY;
}
}
}
Answer by Eluate · Jan 01, 2015 at 01:01 AM
All your variables should either be position or localposition.
You are assigning position and localposition and using them together.
Your answer
![](https://koobas.hobune.stream/wayback/20220613175322im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Object position in relation to another object 1 Answer
y and z rotation axis doing the same thing when x is 270 degrees 0 Answers
spin only on one axis 1 Answer
Credits Camera Script 3 Answers