Unity3d 屏幕上的黑色痕迹

Unity3d 屏幕上的黑色痕迹,unity3d,unity5,Unity3d,Unity5,我正在Unity中创建一个简单的比萨饼切片游戏。我有一个带有碰撞器的精灵作为比萨饼,每当我在碰撞器上拖动鼠标时,它就会得到一个进入点和一个退出点,并在它们之间画一条透明的线,非常像这样: 问题是,每当我移动比萨饼时,线条都会在后面留下某种痕迹,即使我禁用了线条渲染器或整个比萨饼游戏对象。我找到的唯一解决办法是调整游戏窗口的大小,然后一切都恢复正常。 此外,如果我在最大化模式下玩游戏,屏幕上会出现黑线,这很奇怪。和以前一样,如果我调整游戏窗口的大小,一切都会恢复正常。以下是一个屏幕截图: 有人

我正在Unity中创建一个简单的比萨饼切片游戏。我有一个带有碰撞器的精灵作为比萨饼,每当我在碰撞器上拖动鼠标时,它就会得到一个进入点和一个退出点,并在它们之间画一条透明的线,非常像这样:

问题是,每当我移动比萨饼时,线条都会在后面留下某种痕迹,即使我禁用了线条渲染器或整个比萨饼游戏对象。我找到的唯一解决办法是调整游戏窗口的大小,然后一切都恢复正常。 此外,如果我在最大化模式下玩游戏,屏幕上会出现黑线,这很奇怪。和以前一样,如果我调整游戏窗口的大小,一切都会恢复正常。以下是一个屏幕截图:

有人知道如何解决这个问题吗?或者,至少,在游戏模式下,从脚本中调整游戏窗口的大小?我已经尝试过调整相机的大小和改变分辨率,但它没有改变任何东西

我就是这样画线的:

void OnTriggerEnter2D (Collider2D other)
{
    enterPoint = LineDrawer.instance.mousePos;
    enterPoint.z = 0;

    points.Add (enterPoint);

}

void OnTriggerExit2D(Collider2D other)
{


    exitPoint = LineDrawer.instance.mousePos;
    exitPoint.z = 0;
    points.Add (exitPoint);


    GameObject obj = new GameObject ();
    GameObject instance = Instantiate (obj, transform.position, Quaternion.identity) as GameObject;
    Destroy (obj);

    instance.transform.SetParent (transform);
    instance.name = "Cut";

    linerenderer = instance.AddComponent<LineRenderer> ();
    linerenderer.material =  new Material(Shader.Find("Diffuse"));
    linerenderer.useWorldSpace = false;
    linerenderer.SetWidth (0.15f, 0.15f);
    linerenderer.SetVertexCount (2);
    linerenderer.SetPosition (0, enterPoint);
    linerenderer.SetPosition (1, exitPoint);

}
void OnTriggerInter2d(碰撞的R2D其他)
{
enterPoint=LineDrawer.instance.mousePos;
enterPoint.z=0;
点。添加(输入点);
}
无效OnTriggerExit2D(碰撞的R2D其他)
{
exitPoint=LineDrawer.instance.mousePos;
出口点z=0;
点。添加(出口点);
gameobjectobj=新的GameObject();
GameObject实例=实例化(obj,transform.position,Quaternion.identity)为GameObject;
销毁(obj);
instance.transform.SetParent(transform);
instance.name=“Cut”;
linerenderer=instance.AddComponent();
linerenderer.material=新材质(Shader.Find(“漫反射”);
linerenderer.useWorldSpace=false;
linerenderer.SetWidth(0.15f,0.15f);
linerenderer.SetVertexCount(2);
linerenderer.SetPosition(0,输入点);
linerenderer.SetPosition(1,exitPoint);
}

我在这里看到的问题是:

  • 创建四元数.identity时不应给出它。你把它变成了一个孩子。它应该与父对象具有相同的旋转,否则您的本地位置将不起作用:
  • 
    GameObject实例=实例化(obj,transform.position,transform.rotation)为GameObject;
    

  • 您没有使用线的世界空间。我打赌你的
    enterPoint
    exitPoint
    都在世界空间中。试试这个:
  • 
    linerenderer.SetPosition(0,linerenderer.transform.InverseTransformPoint(enterPoint));
    linerenderer.SetPosition(1,linerenderer.transform.InverseTransformPoint(exitPoint));
    

  • 为什么要在触发器函数中执行这些操作?没有if,所以只要比萨饼碰到任何东西,这些函数就会执行
    请出示您的相关代码。理想的情况下,我们可以复制这个问题。是的,我更新了帖子。请更新你的帖子,包括它。