2

我在 microstation 中进行 2D 设计,我想使用任何工具(javascript/Unity 3D 或任何其他工具)在 Web 中表示此设计,其中 Web 工具将不具有所有功能,但应该具有基本功能,例如重塑或添加新形状可用的。

到目前为止,我的方法是,一旦我在 microstation 中创建了设计,然后我正在捕获形状的属性,例如线的坐标,现在使用我想在浏览器中表示的这些坐标,因为这是一个 2D 设计,所以它将被绘制在某个位置(x,y) 例如,我在 microstation 中创建了一条从 (2,2) 到 (10,10) 的线,因此它将是一条直线,并且我拥有我尝试在 Unity 中重新绘制它的所有坐标,这可以做到但我面临通过鼠标单击将长度从 (2,2) 更改为 (20,20) 的问题。我的目标是在运行时而不是在 Unity 编辑器工具中进行。

这是我想为所有几何形状做直线的例子,任何指导都将不胜感激。

到目前为止,我正在尝试 Unity 这样做,但在编辑部分苦苦挣扎,有没有办法统一实现这一目标?

我还查看了各种 javascript 库,如 konvaJS、makerJS、ThreeJS 等,但除了 konvajs 之外,其他库都没有提供整形等功能,在 Konva 中也使用鼠标创建形状,但没有找到任何解决方案。

我们可以通过两种方法中的任何一种来实现这一点吗?当然,我不是在寻找所有功能,只是少数自定义功能,如果是的话,哪种方法最好,我应该继续使用哪种工具。任何指导都会有所帮助。

4

1 回答 1

0

要绘制线段,您可以使用LineRenderer.

//two points of the line-segment are known (or got from the Transform of GameObject)
Vector3 start;
Vector3 end;

GameObject myLine = new GameObject();
myLine.transform.position = start;
myLine.AddComponent<LineRenderer>();
LineRenderer lr = myLine.GetComponent<LineRenderer>();
lr.material = new Material(Shader.Find("Particles/Alpha Blended Premultiply"));
lr.SetColors(color, color);
lr.SetWidth(0.1f, 0.1f);
lr.SetPosition(0, start);
lr.SetPosition(1, end);

//to change the points of this line
myLine.transform.position = another_start;
lr.SetPosition(0, another_start);
lr.SetPosition(1, another_end);

还有其他解决方案:

  • 使用缩放的立方体或胶囊原语。
  • 第 3 方插件:vectrosity

要获得鼠标点击的位置,请使用Camera.main.ScreenToWorldPoint(Input.mousePosition).

要确定单击鼠标的时间,请使用Input.GetMouseButtonUp.

于 2019-07-30T06:52:10.653 回答