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进行判断。
  • 相关阅读:
    用户行为分析
    数据挖掘
    酒店舆情分析
    特征工程·TFIDF提取特征
    mongo.conf 配置信息
    Phpstudy(小皮面板) nginx 解析漏洞
    mvnw 是什么
    java8 函数式接口Function和BiFunction
    ArrayList去除重复元素 利用 HashSet
    idea svn提交 忽略.imi 以及.idea文件夹
  • 原文地址:https://www.cnblogs.com/allyh/p/9093626.html
Copyright © 2011-2022 走看看