Unity中实现立方体单个面独立绘制的问题求助
Unity中实现立方体单个面独立绘制的问题求助
我正在做一个Unity项目,需要在立方体的每个面上独立进行绘制操作,但遇到了个头疼的问题——只要我在其中一个面上画东西,六个面会同时显示出相同的绘制内容。
我用一个Drawer脚本实现了绘制功能,这个脚本负责管理鼠标点击产生的绘制点,还通过插值处理来生成平滑的线条。不过目前看来,正是这个插值逻辑导致绘制的线条同步出现在了所有面上。
[绘制内容同步到所有立方体面的效果示意图]
下面是Drawer脚本里的相关代码片段:
// Relevant code snippet from the Drawer script private void SetPixelsBetweenDrawPoints() { while (drawPoints.Count > 1) { Vector2Int startPos = drawPoints.Dequeue(); Vector2Int endPos = drawPoints.Peek(); InterpolateDrawPositions(startPos, endPos); } } IEnumerator DrawToCanvas() { while(true) { SetPixelsBetweenDrawPoints(); yield return new WaitForSeconds(drawInterval); } } void InterpolateDrawPositions(Vector2Int startPos, Vector2Int endPos) { int dx = endPos.x - startPos.x; int dy = endPos.y - startPos.y; float xinc, yinc, x, y; int steps = (Math.Abs(dx) > Math.Abs(dy)) ? Math.Abs(dx) : Math.Abs(dy); xinc = ((float)dx / steps) * interpolationPixelCount; yinc = ((float)dy / steps) * interpolationPixelCount; x = startPos.x; y = startPos.y; for(int k=0; k < steps; k += interpolationPixelCount) { canvasDrawOrEraseAt((int)Math.Round(x), (int)Math.Round(y)); x += xinc; y += yinc; } canvasDrawOrEraseAt(endPos.x, endPos.y); } void AddDrawPositions(Vector2Int newDrawPos) { drawPoints.Enqueue(newDrawPos); }
我现在想修改这个脚本,让绘制操作只局限在当前点击的那个立方体面上,该怎么做呢?是要调整插值逻辑,还是有更合适的方法来处理立方体单个面的独立绘制需求?
希望能得到各位的见解和建议,非常感谢!
备注:内容来源于stack exchange,提问作者 ERICA
相关产品推荐
相关产品推荐

