2016-12-22 3 views
0

Я пытаюсь перевести камеру, когда я нажимаю Q и EI хочу, например, когда я нажимаю 'q', чтобы камера переводила влево и позвольте мне дать движение, которое, как вращение камеры, чтобы сделать , что я попытался это:Перевести камеру на поворот влево ('Q') и вправо ('E')

public class cameraMove : MonoBehaviour { 

public GameObject player;  //Public variable to store a reference to the player game object 
private float moveSpeed; 

private Vector3 offset;   //Private variable to store the offset distance between the player and camera 

// Use this for initialization 
void Start() 
{ 
    //Calculate and store the offset value by getting the distance between the player's position and camera's position. 
    offset = transform.position - player.transform.position; 
} 

void Update(){ 


    if (Input.GetKey (KeyCode.Q)) 
     transform.position += Vector3.up * moveSpeed * Time.deltaTime; 
    else if (Input.GetKey (KeyCode.E)) 
     transform.position += -Vector3.up * moveSpeed * Time.deltaTime; 



} 

// LateUpdate is called after Update each frame 
void LateUpdate() 
{ 
    // Set the position of the camera's transform to be the same as the player's, but offset by the calculated offset distance. 
    transform.position = player.transform.position + offset; 
} 

}

Я уже имел код, живущий на LateUpdate, чтобы следовать за игроком, теперь я хотите адаптировать код, чтобы он выполнял оба действия, следуйте за игроком и переводите камеру при нажатии кнопки, когда я нажимаю клавиши, в этом случае ничего не происходит, я чувствую, что это так e последнее обновление, но я не знаю, как решить эту проблему.

+0

Как уже говорилось в комментарии в коде,' LateUpdate' является после «Обновить» и сброса позиции камеры. – Arc676

+0

Да, я знаю, что это проблема, как я могу это сделать, поэтому я могу сделать 2 вещи –

+0

Как насчет просто изменить 'offset' вместо' transform.position' в функции 'Update'? – Hellium

ответ

0

Если вы хотите, чтобы камера на орбиту вокруг игрока (как указано в вашем комментарии), в ваших cameraMove «ы сценарий Update() метод:

if (Input.GetKey(KeyCode.Q)) 
{ 
    transform.RotateAround(player.transform.position, player.transform.up, moveSpeed * Time.deltaTime); 
} 
else if (Input.GetKey(KeyCode.E)) 
{ 
    transform.RotateAround(player.transform.position, player.transform.up, -moveSpeed * Time.deltaTime); 
}