2016-12-22 13 views
0

私はQを押してカメラを翻訳しようとしています。例えば、カメラを左に翻訳する 'q'私はすでに、私は今、プレイヤーを追跡するために、LateUpdateに住んでいるコードを持っていたカメラを左( '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; 
} 

}

:私はこれを試してみましたを行うために、私はカメラの回転のようなものです運動を与えてみましょうコードを適応させて両方を行い、プレーヤーに従ってボタンのクリックでカメラを翻訳したいと思います。この場合のキーを押しても何も起こりません私はこの問題を解決する方法を知らない。あなたのcameraMoveのスクリプトUpdate()方法で

+0

あなたのコード内のコメントで述べたように、 'LateUpdate'があります'Update'の後に呼ばれ、カメラの位置をリセットします。 – Arc676

+0

ええ、私はそれが問題であることを知っています。それを解決するにはどうしたらいいですか?2つのことができます –

+0

'update'関数の' transform.position'の代わりに単に 'offset'を変更するのはどうですか? – Hellium

答えて

0

あなたはカメラがプレイヤーの周りに周回したい場合は(あなたのコメントで述べたように)、:

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); 
} 
関連する問題