Unity Transform和Input

歡迎來到unity學習unity培訓unity企業培訓教育專區,這裏有很多U3D資源U3D培訓視頻U3D教程我們致力於打造業內unity3d培訓學習第一品牌。

座標系

 

      概念理解:世界座標系,局部座標系。

 

      世界座標系與本地座標系:所有物體的世界座標系都是相同的、不會改變。每個物體都有一個本地座標當物體旋轉時,本地座標系統也會跟着物體一起旋轉。World Space(世界座標):我們在場景中添加物體(如:Cube),他們都是以世界座標顯示在場景中的。transform.position可以獲得該位置座標。

 

常用的必然事件

 

    在Unity的腳本中,可以定義一些特定的函數,這些函數會在滿足某些條件時由Unity自動調用,它們被稱爲必然事件(Certain Events)。而Start和Update正是最常用的兩個事件,因此Unity默認爲新建的腳本添加了這兩個事件。

 

常用的必然事件:

    (1Awake():喚醒腳本,此方法爲系統執行的第一個方法,用於腳本 的初始化,在腳本的生命週期中只執行一次。

    (2Update():正常更新,用於更新邏輯。每創建一個腳本,腳本中都會默認添加這個方法。此方法每幀都會由系統自動調用一次。

    (3Start():此方法在Awake()方法之後,Update()方法之前執行,並且只執行一次

    (4LateUpdate():此方法在Update()方法執行後調用,同樣每一幀都調用。

    (5FixedUpdate():固定更新,更新頻率爲0.02s

    (6OnGUI():OnGUI()在每一幀都會由系統自動調用一次,渲染和處理GUI事件時調用。

 

輸出的四種方式:

       print("hello");//正常的輸出格式
       Debuge.Log("hello");//正常的輸出格式
       Debuge.LogWarning("hello");//警告輸出
       Debuge.LogError("hello");//有錯誤的輸出


MonoBehanviour類

    所有的腳本類均需要從它之間或者間地繼承,腳本必然事件就是從它繼承而來。除了必然事件它還定義了各種特定事件的響應函數。

 

例:

 

監視變量:

      public int id;//在監視面板裏面可以看到
      private string name;//在監視面板裏面看不到
      protected string sex;//在監視面板裏面看不到
      int age;//在監視面板裏面看不到

   注:一般只用public和private


Transform:

       GameObject的Transform屬性可以進行位置,大小,旋轉的設置

          位置:position

          旋轉:rotate

          位置:localScale

 

Vector3向量:

    Vector3是Unity中定義的一個含有x,y,z三個字段的類,可以表示位置點,也可以表示一個向量。Vector3乘以數值表示對向量的三個值乘以相應的值,v1-v2則表示從v2指向v1的向量。

 

    Vector類內置成員:up,down,left,right,forward,back,zero

    寫法:transform.Translate (Vector3.forward);
         transform.Translate (new Vector3(10,0,0));

 

Input按鍵系統

 

1、鍵盤判斷

   (1)GetKey當通過名稱指定的按鍵被用戶按住時返回true

   (2)GetKeyDown當用戶按下指定名稱的按鍵時的那一幀返回true。

   (3)GetKeyUp在用戶釋放給定名字的按鍵的那一幀返回true。

   (4)GetAxis(“Horizontal")和GetAxis(“Verical”)用方向鍵或WASD鍵來模擬-1到1的平滑輸入

2、鍵盤判斷

    (1):if (Input.GetKey(“up”)) {

     print("up arrow key is held down");}


    (2):if (Input.GetKey(“down”)) {

     print("down arrow key is held down");}


    (3):If(Input.GetKeyDown(KeyCode.Escape)){

     print(“按下Esc鍵”);}

 

    (4):If(Input.GetKeyUp(KeyCode.Escape)){

    print(“鬆開Esc鍵”);}


    (5):If(Input.GetKeyDown(KeyCode.A)){

     print(“按下A鍵”);}


    (6):If(Input.GetKeyUp(KeyCode.D)){

     print(“鬆開D鍵”);}


    (7):If(Input.GetAxis(“Horizontal")){

     print(“按下水平鍵”);}


    (8):If(Input.GetKeyUp("Verical“)){

     print(“按下垂直鍵”);}

 

3、鼠標判斷

    (1)GetButton       根據按鈕名稱返回true當對應的虛擬按鈕被按住時。 

    (2)GetButtonDown   在給定名稱的虛擬按鈕被按下的那一幀返回true。

    (3)GetButtonUp     在用戶釋放指定名稱的虛擬按鈕時返回true。

例:

         if(Input.GetButton("Fire1")){
              print(“按下鼠標左鍵”);
         }
         if (Input.GetMouseButton(0)) {
              Debug.Log("按下鼠標左鍵");
        }
         if (Input.GetMouseButton(1)) {
              Debug.Log("按下鼠標右鍵"); 
        }
        if (Input.GetMouseButton(2)) {
             Debug.Log("按下鼠標中鍵");
        }

 

給物體施加普通力

       先給物體添加剛體

       transform.rigidbody.AddForce (0,0,1000);

 更多精彩情關注:http://www.gopedu.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章