您的位置:首页 > 编程语言 > PHP开发

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

2017-09-02 15:37 573 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# unity unity3d
相关文章推荐