Unity3d 从一个点到另一个旋转点的光线投射

Unity3d 从一个点到另一个旋转点的光线投射,unity3d,Unity3d,我必须在游戏中创建一个激光束效果 基本上我是用线条渲染的。我必须从玩家到某个点划一条线,那个点在屏幕上旋转。现在,我必须在该点进行光线投射,以在渲染线中创建第三个反射顶点 Physics2d.raycast不会返回准确的命中点。你能帮助我如何在旋转物体上使用光线投射吗。我会非常感激的。我试着计算角度,但仍然有差异 使用UnityEngine; 使用系统集合 public class RayDeflection : TouchHandler { Vector3 p1, p2, o

我必须在游戏中创建一个激光束效果

基本上我是用线条渲染的。我必须从玩家到某个点划一条线,那个点在屏幕上旋转。现在,我必须在该点进行光线投射,以在渲染线中创建第三个反射顶点

Physics2d.raycast不会返回准确的命中点。你能帮助我如何在旋转物体上使用光线投射吗。我会非常感激的。我试着计算角度,但仍然有差异

使用UnityEngine; 使用系统集合

public class RayDeflection : TouchHandler
{

        Vector3 p1, p2, orgPos;
        LineRenderer lineRenderer;

        protected const int HITS = 2;
        float RAY_LENGTH = 1.5f;
        // Use this for initialization
        void Start ()
        {
                PlayerScript = PlayerScript = GameObject.FindGameObjectWithTag ("PlayerScript").gameObject.GetComponent<PlayerControlScript> ();

                lineRenderer = transform.GetComponent<LineRenderer> ();
                Laser ();
        }
        protected override void OnTouchStart (Vector3 tapPosition, TouchHandler.ScreenTouchType touchType)
        {



        }

        protected override void OnTouchMoved (Vector3 tapPosition, Vector3 deltaMove, float duration, TouchHandler.ScreenTouchType touchType)
        {
                //RaycastCheck ();  
                Laser ();
                //Laser (tapPosition);
        }


        protected override void OnTouchEnd (Vector3 tapPosition, float duration, TouchHandler.ScreenTouchType touchType)
        {

        }



        // Update is called once per frame
        void Laser ()
        {

                //p1 = transform.position;
                orgPos = transform.position;        

                p1 = transform.right * RAY_LENGTH;


                {
                        RaycastHit2D hit = Physics2D.Raycast (orgPos, p1);

                        lineRenderer.SetPosition (0, transform.position);


                        //Debug.DrawRay (p1, p2);

                        //  
                        if (hit.collider != null) {         
                                //  Debug.LogError (hit.collider.name);

                                p1 = hit.point;
                                lineRenderer.SetPosition (1, p1);


                                Vector3 distVect = (transform.position - p1);
                                Vector2 shotVect = new Vector2 (distVect.x, distVect.y);    

                                Vector3 rVect = Vector3.Reflect ((p1 - orgPos), Vector3.right);
                                Debug.LogError (p1);

                                p2 = rVect * RAY_LENGTH;



                                //  Debug.DrawRay (p1, p2);

                                if (hit.collider.tag.Equals (Constant.tag.items)) {

                                        lineRenderer.SetVertexCount (3);
                                        //                      
                                        lineRenderer.SetPosition (2, p2);
                                } else {
                                        lineRenderer.SetVertexCount (2);
                                }
                        } else {
                                lineRenderer.SetVertexCount (2);
                        }


                }
        }
}

如果有人愿意帮助你,你可能必须更具体地描述你已经尝试过的代码,并分享其中的一些代码。