zoukankan      html  css  js  c++  java
  • unity操作Hierarchy视图下同名的对象

      上周遇到了一个令我尴尬的问题,在同一个场景内有了两个名字相同的对象,给个形象化的栗子:

      场景内有橱窗,橱窗是模型,窗户是可以打开的[点击控制],窗户可以控制打开和关闭的。然后我就选用了一个保守的方式进行操作【名字用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;
    即可。
    另,也可以使用Tag进行判断。
  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    70. Climbing Stairs
    647. Palindromic Substrings
    609. Find Duplicate File in System
    583. Delete Operation for Two Strings
    556 Next Greater Element III
    553. Optimal Division
    539. Minimum Time Difference
    537. Complex Number Multiplication
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/allyh/p/9093626.html
Copyright © 2011-2022 走看看