周總結

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

今天總結一下上週學習的知識。

 

座標系:

 

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

 

常用的必然事件:

 

       在Unity的腳本中,可以定義一些特定的函數,這些函數會在滿足某些條件時由Unity自動調用,它們被稱爲必然事件(Certain Events)。

       1)、Awake():喚醒腳本,此方法爲系統執行的第一個方法,用於腳本的初始化,在腳本的生命週期中只執行一次。
       2)、Update():正常更新,用於更新邏輯。每創建一個腳本,腳本中都會默認添加這個方法。此方法每幀都會由系統自動調用一次。
       3)、Start():此方法在Awake()方法之後,Update()方法之前執行,並且只執行一次
       4)、LateUpdate():此方法在Update()方法執行後調用,同樣每一幀都調用。
       5)、FixedUpdate():固定更新,更新頻率爲0.02s
       6)、OnGUI(): OnGUI()在每一幀都會由系統自動調用一次,渲染和處理GUI事件時調用。

 

Transform類:

 

       物體的位置、旋轉和縮放。

 

Transform屬性方法:

       transform.position:在世界空間座標transform的位置

       transform.rotaition:重設世界的旋轉角度

      transform.translate: 向某方向移動。

      transform.Rotate :旋轉

      transform.Find 查找:通過名字查找子物體並返回它。  

 

Input輸入:

 

       使用這個類能夠讀取輸入管理器設置的按鍵,以及訪問移動設備的多點觸控或加速感應數據。

 

input方法:

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

       GetKey :   當通過名稱指定的按鍵被用戶按住時返回true。想想自動開火。

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

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

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

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

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

       GetMouseButton:當指定的鼠標按鈕被按下時返回true

       注意:每次輸入在"Update()"之前不會再更新,所以建議你將所有的輸入調用都寫在Update方法中。

 
給物體一個普通力:
       先給物體添加剛體,
       transform.rigidbody.AddForce (0,0,800);

GameObject
 
       GameObject是Unity場景裏面所有實體的基類.
 

創建,銷燬,克隆遊戲對象

 

        創建:GrameObject cube =GrameObject.CreatePrimitive(PrimitiveType.Cube):

           cube.name=立方體;//設定名字

           cube.renderer.material.color=Color.red;

        克隆:GrameObject obj =(GameObject)Instantiate(cube);

        銷燬:Destroy(cube,1)//一秒後銷燬cube;

 

Find查找

 

         通過名字查找物體並返回    

        通過標籤查找遊戲物體

        void OnCollisionEnter(Collision col) {
        if (col.gameObject.name == "Player")//通過名字查找
        {
}

        if (col.tag == "Player")通過標籤查找
        {
}
        }

 

Time類:倒計時

 

        屬性: deltaTime 

          float a = 3f;


            a -= Time.deltaTime;
                if (a >= 0) {
                 print(a);
              }

 

使用Time類移動物體:

 

       float move_h=0;
        if (Input.GetKey (KeyCode.A)) {
           move_h-=Time.deltaTime;
         }
        if (Input.GetKey (KeyCode.D)) {
           move_h+=Time.deltaTime;
         }
       transform.Translate(new Vector3(move_h,0,move_v));


Yield

 

       可以實現將一段程序延遲執行或者將其各個部分分佈在一個時間段內連續執行

       void Start () {

           StartCoroutine("Get");
        }

      IEnumerator Get() {

           yield return new WaitForSeconds(2f);
           print("aaaaaaaa");
        }

 

消息傳遞函數:

 

        SendMessage ("函數名",參數,SendMessageOptions) //GameObject自身的Script

        BroadcastMessage ("函數名",參數,SendMessageOptions)  //自身和子ObjectScript

        SendMessageUpwards ("函數名",參數,SendMessageOptions)  //自身和父ObjectScript

 

Random隨機數

 

        返回一個隨機浮點數,在min(包含)和max(包含)之間。(只讀)

        float a=Random.value;

        int b=Random.Range(0,100)    包括最大和最小
        float c=Random.Range(0.0f,1.0f);   包括最小但不包括最大

 

碰撞檢測

 

       在unity3d中,能檢測碰撞發生的方式有兩種,一種是利用碰撞器,另一種則是利用觸發器

       碰撞(Collision)信息是傳遞到Collider.OnCollisionEnter,  Collider.OnCollisionStay  和 Collider.OnCollisionExit事件。

       碰撞器:Box Collision,Sphere Collision,Capsule Collision,Mesh Collision,Whell Collision,Terrain Collision

       觸發器(勾選Is Tagger):

 

觸發信息檢測:

       1 、當進入觸發器
           MonoBehaviour.OnTriggerEnter( Collider other )     
       2、當退出觸發器
           MonoBehaviour.OnTriggerExit( Collider other )    
       3、當逗留觸發器      

           MonoBehaviour.OnTriggerStay( Collider other )

 

觸發信息檢測2:

       1、當進入碰撞器
           MonoBehaviour.OnCollisionEnter( Collision collisionInfo )
       2、當退出碰撞器
           MonoBehaviour.OnCollisionExit( Collision collisionInfo )
       3、當逗留碰撞器
           MonoBehaviour.OnCollisionStay( Collision collisionInfo )


忽略碰撞

       有些時候我們不想讓指定的兩對象發生碰撞,即要忽略他們的碰撞
        public Transform ball;  
           void Start() { 
                Physics.IgnoreCollision(ball.collider, this.collider);  
           } 



今天上午測試有道題沒寫出來,複習一下

     Test2訪問Test1的腳本

    Test1

    {

    public int  x=3;

    }

    Void  Start(){

    Test1 a=GameObject.GetComponent<Test1>();

    print (a.x);

    }

 

更多精彩請看:http://www.gopedu.com/

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