屏幕上的黑色痕迹

时间:2016-07-22 09:40:31

标签: unity3d unity5

我正在Unity中构建一个简单的披萨切片游戏。我有一个附有碰撞器的Sprite作为披萨,每当我将鼠标拖过对撞机时,它会得到一个入口点和一个出口点,并在它们之间画一条透明线,非常像这样:

问题是,每当我移动披萨时,即使我禁用了线条渲染器或整个比萨饼游戏对象,线条也会留下一些痕迹。我发现的唯一解决方案是调整游戏窗口的大小,一切都恢复正常。 此外,如果我以最大化模式玩游戏,屏幕会填充黑线,这很奇怪。和以前一样,如果我调整游戏窗口的大小,一切都会恢复正常。这是一个截图:

有没有人知道如何解决这个问题?或者,至少,在播放模式期间通过以某种方式从脚本调整游戏窗口大小来绕过它?我已经尝试调整相机大小并改变分辨率,但它没有改变任何东西。

这是我绘制线条的方式:

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);

}

1 个答案:

答案 0 :(得分:0)

我在这里可以看到的问题是:

  1. 创建时不应该Quaternion.identity。你是个小孩子。它应该与父母一致,或者你的本地职位不会起作用:
  2. GameObject instance = Instantiate (obj, transform.position, transform.rotation) as GameObject;

    1. 您没有使用世界空间。我敢打赌,enterPointexitPoint位于世界空间。试试这个:
    2. linerenderer.SetPosition (0, linerenderer.transform.InverseTransformPoint(enterPoint)); linerenderer.SetPosition (1, linerenderer.transform.InverseTransformPoint(exitPoint));

      1. 为什么要在触发器功能中执行所有这些操作?没有if,所以每当比萨饼碰到任何东西时这些功能都会执行。