2015-12-01 66 views
1

我有一個教程場景,你穿過關卡併到達某個門,當你碰到它時,它禁用頂部的畫布,並激活門。我在Scripting Docs中搜索了各處,但無法找到解決方案。什麼類型的變量你聲明對象進行動畫處理?聲明gameObject動畫

我想聲明public GameObject/Transform UIQuestUIQuest.Animation.Play("DoorOpen"),但它不具有API在Animation爲的錯誤出現。我只是做這個完全錯誤的,還是有一些簡單的我錯過了?

完整的腳本:

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class DoorOpen : MonoBehaviour { 

    public GameObject door; 

    public Canvas UIQuest; 

    void Start() { 

    } 

    void Update() { 

    } 

    void OnCollisionEnter(Collision doorCollision) 
    { 
     if (doorCollision.gameObject.name == "Door") 
     { 
      door.Animation.Play("DoorOpen"); 
      UIQuest.enabled = false; 
     } 
    } 
} 
+0

門是什麼類型的對象?它只是一個你正在旋轉的飛機還是一個實際的模型?如果是這樣,門是否有爲其定義的任何動畫以及附加到該對象的動畫控制器? –

+0

@Matthew Pigram這是一個簡單的立方體,我已經重新調整大小以適合尺寸 –

+0

您不需要任何特別的東西,只需要隨着時間的推移執行門的旋轉,將門的樞軸設置到角落並旋轉當滿足條件時(即,當檢測到碰撞時)沿着y軸門。類似'gameobject.transform.rotate(0,rotationAmount * Time.DeltaTime,0)' –

回答

0

作爲遊戲對象只執行一個簡單的動畫,你不需要任何特殊(如AnimationController),你只需要執行門隨着時間的旋轉,設置在滿足條件時(即,當檢測到碰撞時),將門樞轉到邊緣並沿着y軸旋轉門。

喜歡的東西:

gameobject.transform.Rotate(0, rotationAmount * Time.DeltaTime, 0); 

您還需要邏輯來決定何時停止轉動(即當門完全打開),除非你想有一個旋轉門。另外,如果門只是一扇推拉門,那麼執行翻譯而不是旋轉就更容易了。

+0

只是一個簡單的問題,我將如何設置樞軸點到邊緣?我嘗試過使用空的GameObject並將門設置爲小孩,但它仍然在中心旋轉 –

+0

您正處在正確的軌道上!在這種情況下,不是旋轉門,而是旋轉空的遊戲對象。確保在旋轉之前將遊戲物體放置在門的邊緣。我會這樣做的方式是在門腳本中創建一個名爲PivotPoint類型爲Gameobject的公共變量,然後在編輯器中將空的gameobject拖到檢查器中的變量中,然後在腳本中通過其旋轉PivotPoint transform:D –

+0

這個關鍵似乎可行,但Unity表示它沒有DeltaTime的定義。是deltaTime,還是我必須引用別的? –