Unity 通过物体上的3个点坐标变化,计算物体变化

这个理论本来应该用矩阵计算,但是不会,所以用了笨方法。

假设上一帧三个点是:point1’ , point2‘ , point3’

       当前帧三个点是:point1 , point2,point3

   物体上个点是:objpoint1 , objpoint2,objpoint3

point1’ , point2‘ , point3’  可以形成一个面

point1 , point2,point3 也可以形成一个面

如果让两个面重合,就可以很好操作了。

point1 当作物体中心点 , 物体移动以这个点为基准

        Vector3 zdir = Vector3.Cross((point2- point1 ), (point3- point1 )).normalized;
        Vector3 zdir1 = Vector3.Cross(objpoint2 - objpoint1 , (objpoint3- objpoint1 )).normalized;

        GameObject parent = new GameObject();
        parent.transform.position = point1’;
        parent.transform.forward = zdir1;
        Vector3 delta = transform.position - point1’;

        transform.SetParent(parent.transform);
        transform.position = parent.transform.position + delta;

        parent.transform.forward = zdir;


        Vector3 dir = objpoint2 - objpoint1 ;
        float angle = Vector3.Angle((point2- point1 ), dir);

        if (parent.transform.InverseTransformDirection(Vector3.Cross(dir, (point2- point1 ))).z < 0)
            angle *= -1;

       parent.transform.Rotate(new Vector3(0, 0, angle), Space.Self);

©️2020 CSDN 皮肤主题: 我行我“速” 设计师:Amelia_0503 返回首页