繁体   English   中英

如何设置对象的矢量子对象,使x,y和z为局部

[英]How to set a vector child of an object so x , y and z are local

关键是,我必须创建一个跟随摄像机的光线投射系统。 由于屏幕上有特定的界面,因此无法使用Unity提供的ScreenPointToRay()方法。

但是这是我尝试做的事情:

  • 我在两个轴上的鼠标坐标都在-1和1之间
  • 我想将这些坐标作为Vector3添加到camera.transform.forward作为法线向量
  • 两条光线的总和应该给我最后一条。

但是由于某些原因,最终坐标似乎并不是真正的局部坐标,根据我所处的位置,其中一个坐标会遇到一些问题

我试图使用Unity提供的多种方式将向量设置为本地:

  • Vector3.Cross
  • cam.transform.worldToLocalMatrix.MultiplyVector
  • cam.transform.InverseTransformVector

但徒劳

            //Vector form mouse coordinates
            aim = new Vector3(mousePosInGameScreen.x ,mousePosInGameScreen.y,0);
            // Try to make it global first
            aim = transform.TransformVector(aim);

            //Tried to do a Cross multiplication with the camera.transform.forward vector
            //Vector3 aim = Vector3.Cross(cam.transform.forward,new Vector3(mousePosInGameScreen.x,mousePosInGameScreen.y,1));

            //Tried to set it to the local matrix using worldToLocalMatrix
            //aim = cam.transform.worldToLocalMatrix.MultiplyVector(aim);

            //Does pretty much the same but with simpler method
            aim = cam.transform.InverseTransformVector(aim);

            //Adding this to cam.transform.forward
            Vector3 direction = aim /*/ coefDirection*/ + cam.transform.forward;


            Ray forwardRay = new Ray(cam.transform.position, rotation);//forward
            Ray aimRay = new Ray(cam.transform.position + rotation, aim/4);//aim
            Ray finalRay = new Ray(cam.transform.position, direction);//Final Ray

            Debug.DrawRay(finalRay.origin, finalRay.direction, Color.green);
            Debug.DrawRay(forwardRay.origin, forwardRay.direction, Color.red);
            Debug.DrawRay(aimRay.origin, aimRay.direction, Color.yellow);

我期望有一个漂亮的直角三角形,如下所示:

https://i.imgur.com/gOv6WnJ.png

从某些方向看时,有时我会产生怪异的角度。 当我向前看时总是很好,但是当我向后看时(例如),“ x”目标坐标将反转

所以,如果有人知道这里发生了什么,我会接受它,并预先感谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM