1. 程式人生 > >unity操作Hierarchy視圖下同名的對象

unity操作Hierarchy視圖下同名的對象

需要 float arch hierarchy cal hiera code 問題 ans

  上周遇到了一個令我尷尬的問題,在同一個場景內有了兩個名字相同的對象,給個形象化的栗子:

  場景內有櫥窗,櫥窗是模型,窗戶是可以打開的[點擊控制],窗戶可以控制打開和關閉的。然後我就選用了一個保守的方式進行操作【名字用111代替】

  

if (transform.name == "111")
        {
            float num = transform.GetComponent<Transform>().rotation.y;
            if (num == 180)
            {
                transform.rotation 
= Quaternion.Euler(new Vector3(0, 359.9f, 0)); } else if (num==280) { transform.rotation = Quaternion.Euler(new Vector3(0, 179.9f, 0)); } else if(num== 359.9) { transform.rotation = Quaternion.Euler(new
Vector3(0, 180, 0)); } else if (num == 179.9f) { transform.rotation = Quaternion.Euler(new Vector3(0, 280, 0)); } }

我的想法就是查找之後,利用對象身上的不同點進行判斷,再進行操作。但是這裏控制旋轉的話,是有問題的。問題在於,unity中旋轉rotation默認是以四元數存儲的,而我們的習慣是利用歐拉角,通常需要將歐拉角轉為四元數。這裏的num是處理之後的值,所以上述栗子裏,需要改正代碼,

float num = transform.GetComponent<Transform>().localEulerAngles.y;
即可。

unity操作Hierarchy視圖下同名的對象