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