transform.SetParent(ParentTra) 如果ParentTra的scale不是(1,1,1),会导致子物体变形

来源:互联网 发布:淘宝王者荣耀cdk靠谱吗 编辑:程序博客网 时间:2024/05/16 00:44

SetParent(ParentTra) 这个方法,经常会导致scale被改变,多多少少有一点,如果本身或者父对象的scale已经改变很大,变化的就更明显,测试了好几个版本都有这问题,就自己尝试解决了一下,下面这个方法可以解决我项目中的问题,有一层父级和无父级的都测试通过了

   public GameObject Parent;

    void thisSetParent()
    {
        Vector3 ParentlossyScale = Parent.transform.lossyScale;

        Vector3 newScale = new Vector3();

        newScale.x = transform.lossyScale.x / ParentlossyScale.x;
        newScale.y = transform.lossyScale.y / ParentlossyScale.y;
        newScale.z = transform.lossyScale.z / ParentlossyScale.z;

        transform.SetParent(Parent.transform);

        transform.localScale = newScale;

    }


层级再多并且scale小数点后的位数太多还是有问题,那就配合下面这方法(我的项目里,经常会set parent null,所以再配合下面的方法,已经可以解决我的问题,)


private Vector3 thislossyScale;
    void Start()
    {
        thislossyScale = transform.lossyScale;
    }


    void SetParentNull()
    {
        transform.SetParent(null);
        transform.localScale = thislossyScale;
    }


如果有不对的地方欢迎指正,谢谢(286254418@qq.com)

阅读全文
1 0
原创粉丝点击