- Home /
 
 
               Question by 
               Cow dude · Jul 15, 2013 at 05:32 AM · 
                c#camera-movement  
              
 
              camera does not move behind the player when switching to them?
so i am making a 3rd person game with multiple characters that you can switch between. i wrote this script and i can switch between them fine, but the camera does not move behind the new character. when you switch, the camera moves directly to the new character at what ever rotation it is at, so if your the characters are face to face, when you switch the camera is looking at the new characters front, not moving to its back. my script:
    using UnityEngine;
     using System.Collections;
     
     public class camFollow : MonoBehaviour {
 
     public LayerMask mask;
     public Transform[] target;
     public float height;
     public float distance;
     public float x;
     public float y;
     public float yMin;
     public float yMax;
     int i = 0;
     
     void Update () {
         target[i].GetComponent<walk>().enabled = true;
         
            float scroll = Input.GetAxis("Mouse ScrollWheel");
            if(scroll > 0){
               target[i].GetComponent<walk>().enabled = false;
             if(++i == target.Length){
                 i= 0;
             }
            } 
            else if (scroll < 0){
              target[i].GetComponent<walk>().enabled = false;
             if(--i < 0){
                 i = target.Length - 1;
             }
            }
         
         x += 3 * Input.GetAxis ("Mouse X");
         y += 3 * -Input.GetAxis ("Mouse Y");
         if(y > yMax){
             y = yMax;
         }
         if(y <yMin){
             y = yMin;
         }
         
         Quaternion rotation = Quaternion.Euler (y, x, 0);
         //Quaternion rotation = target[i].rotation;
         Vector3 pos = rotation * new Vector3(0, height, -distance) + target[i].position;
         
         transform.rotation = rotation;
         transform.position = pos;
         transform.position = Vector3.Lerp (transform.position, pos, Time.deltaTime);
         transform.LookAt (target[i]);
         RaycastHit hit;
         if(Physics.Linecast(target[i].position, transform.position, out hit, mask)){
             float tempDistance =   Vector3.Distance(target[i].position, hit.point);
             pos = rotation * new Vector3(0, height, -tempDistance) + target[i].position;
             transform.position = pos;
         }
     }
 }
 
               any idea how to fix this?
               Comment
              
 
               
              Your answer
 
             Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
How to restrict camera movemetn alaong the y axsis? 2 Answers
Problems changing camera position 1 Answer
How do I program camera movement 2 Answers