2016-02-17 141 views
0

因此,爲了解釋我想要實現的目標,我使用「E」鍵將照相機繞播放器旋轉90度,然後繼續跟蹤播放器。我不知道該如何順利完成 - 到目前爲止,我已經嘗試了使攝像機跟蹤播放器的動畫,並且一旦動畫完成,動畫就會返回到原始位置。動畫照相機轉動播放器,然後繼續跟蹤播放器

這裏是我當前的代碼:

using UnityEngine; 
using System.Collections; 

public class TCam : MonoBehaviour { 


    public Transform target; 
    private Animator animator; 
    private Vector3 positionOffset ; 

    int i =0; 
    // Use this for initialization 
    void Start() { 
     //positionOffset = target.transform.position + transform.position; 
     positionOffset = new Vector3(-10, 10,0); 
     animator = GetComponent<Animator>(); 
     animator.enabled = true; 
    } 

    // Update is called once per frame 
    void Update() { 
     if (Input.GetKeyDown (KeyCode.E)) { 
      animator.SetTrigger ("switch"); 

      transform.rotation = Quaternion.Euler (45, transform.rotation.eulerAngles.y + 90, 0); 
      target.transform.rotation = Quaternion.Euler (45, target.transform.rotation.eulerAngles.y + 90, 0); 

      if (i == 0) { 
       positionOffset = new Vector3 (0, 10, 10); 
       i++; 
      } else if (i == 1) { 
       positionOffset = new Vector3 (10, 10, 0); 
       i++; 
      } else if (i == 2) { 
       positionOffset = new Vector3 (0, 10, -10); 
       i++; 
      } else if (i == 3) { 
       positionOffset = new Vector3 (-10, 10, 0); 
       i = 0; 
      } 
     } else if (Input.GetKeyDown (KeyCode.Q)) { 
      transform.Rotate (-45, 0, 0); 
      transform.Rotate (0, -90, 0); 
      transform.Rotate (45, 0, 0); 

      target.transform.Rotate (-45, 0, 0); 
      target.transform.Rotate (0, -90, 0); 
      target.transform.Rotate (45, 0, 0); 
     } 
     transform.position = target.position + positionOffset; 
    } 
} 
+0

只是爲了澄清:你的核心問題是當按下'E'時,順利地在相機周圍旋轉相機;和動畫是一個單獨的事情。我是否正確閱讀? – andeart

+0

@andeart對不起,讓我感到困惑,我的意思是我嘗試從動畫窗口動畫相機,但是當我做了我不能讓它跟蹤播放器,或者如果我可以動畫會搞砸,當它被稱爲從代碼,但是是的,我想一次在相機周圍順暢地旋轉相機90度。 – AlexNotTheLion

+0

您是否嘗試過使用http://docs.unity3d.com/ScriptReference/Transform.RotateAround.html? – andeart

回答

1

而是與四元數設置的,請嘗試使用Transorm.RotateAround()方法如下:

transform.RotateAround(target.transform.position, Vector3.up, 40 * Time.deltaTime); 

與條件,過去它的原始停止時,它的90度迴轉。同樣,向後移動以將其移回。

我希望有幫助!

+0

沒錯。爲了善良,**從不使用四元數**。 – Fattie