Question by
dumbas10 · Feb 26, 2017 at 11:38 AM ·
cameracamera-movementcharacter movement
I want my camera to move only Y axis and my character to rotate with my camera
This is my code for my camera
public Camera cam;
public Transform target;
public float distance = 5.0f;
public float ySpeed = 120.0f;
public float yMinLimit = -20f;
public float yMaxLimit = 80f;
public float distanceMin= 0.5f;
public float distanceMax= 15f;
public Rigidbody rigidbody;
float y = 0.0f;
void Start(){
Vector3 angles = transform.eulerAngles;
y = angles.x;
if (rigidbody != null) {
rigidbody.freezeRotation = true;
}
}
void LateUpdate(){
if (target) {
y -= Input.GetAxis ("Mouse Y") * ySpeed * 0.02f;
y = ClampAngle (y, yMinLimit, yMaxLimit);
Quaternion rotation = Quaternion.Euler (y, 0, 0);
distance = Mathf.Clamp (distance - Input.GetAxis ("Mouse ScrollWheel") * 5, distanceMin, distanceMax);
RaycastHit hit;
if (Physics.Linecast (target.position, transform.position, out hit)) {
distance -= hit.distance;
}
Vector3 negDistance = new Vector3 (0.0f, 0.0f, -distance);
Vector3 position = rotation * negDistance + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
public static float ClampAngle(float angle,float min,float max){
if (angle < -360f)
angle += 360f;
if (angle > 360f)
angle -= 360f;
return Mathf.Clamp (angle, min, max);
}
} And this is my code for my character movement
public float skorost = 1.0f;
public float zavurtane = 1.0f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
float translation = Input.GetAxis ("Vertical") * skorost;
float r = zavurtane * Input.GetAxis ("Mouse X");
translation *= Time.deltaTime;
transform.Translate (0f, 0f, translation);
transform.Rotate (0f, r, 0f);
}
Now my character rotate when i move my mouse but my camera dont follow my character rotation. Pls help ! :)
Comment