我正在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);
}
答案 0 :(得分:0)
我在这里可以看到的问题是:
Quaternion.identity
。你是个小孩子。它应该与父母一致,或者你的本地职位不会起作用:
GameObject instance = Instantiate (obj, transform.position, transform.rotation) as GameObject;
enterPoint
和exitPoint
位于世界空间。试试这个:
linerenderer.SetPosition (0, linerenderer.transform.InverseTransformPoint(enterPoint));
linerenderer.SetPosition (1, linerenderer.transform.InverseTransformPoint(exitPoint));