繁体   English   中英

在游戏对象unity3d上绘制自定义形状

[英]Draw a custom shape on a gameobject unity3d

我仍然是团结的新手,如果这是一个非常明显的问题,我感到抱歉。 实际上,我正在尝试构建一个游戏,其中一个细小的物体(下图中的白色棍子)试图接触一个球形物体(下图中的橙色物体)。 红线,绿线,蓝线和黄线是从棍子顶部朝不同方向发射的射线。 在此处输入图片说明

主要目标是在球体上绘制黑色形状,以说明杆和球体之间的交点。 为了更好地理解它,我们在下图中从顶视图的角度看到场景,以及摇杆正确完成工作时的外观。 在此处输入图片说明

为此,我使用了这段代码来绘制光线投射的命中点,但是它不起作用,因为rend.material.mainTexture始终为null ,我不确定为什么!

RaycastHit hit_down, hit_right, hit_forward,  hit_left;         
        if (Physics.Raycast(stick.transform.position, stick.transform.TransformDirection(Vector3.down), out hit_down))
       {             
                 Debug.DrawRay(stick.transform.position, stick.transform.TransformDirection(Vector3.down) * hit_down.distance, Color.yellow);              
               Debug.Log("Point of contact down: "  + hit_down.point + " on " + hit_down.collider.gameObject.tag);
               if (hit_down.collider.gameObject.tag == "sphere")             
               {
         Renderer rend = hit_down.transform.GetComponent<Renderer>();
                     MeshCollider meshCollider = hit_down.collider as MeshCollider;

             Debug.Log(rend.material.mainTexture);
                     if (rend == null || rend.sharedMaterial == null || meshCollider == null)
                            return;
                     Texture2D tex = rend.material.mainTexture as Texture2D;
                     Vector2 pixelUV = hit_down.textureCoord;
                     pixelUV.x *= tex.width;
                     pixelUV.y *= tex.height;
                     tex.SetPixel((int)pixelUV.x, (int)pixelUV.y, Color.black);
                     tex.Apply();             
               } 
     }

最后一个问题,这是实现我的目标的正确方法吗? 还有其他更有效的方法来完成此任务吗?

提前致谢。

问题可能出在Renderer rend = hit_down.transform.GetComponent<Renderer>();

由于rend.material.mainTexture返回null ,因此看来rend本身实际上是null 这可能是由于您尝试获取的Renderer类型引起的。

您可能想要尝试Renderer rend = hit_down.transform.GetComponent<LineRenderer>(); 代替。 其他一切都应按预期工作

暂无
暂无

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

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