我正在做一个Unity项目,我需要独立地在立方体的每个面上画画。但是,当我在一张面上画画时,这些变化会同时反映在立方体的所有六个面上。
我使用抽屉脚本实现了绘图功能。此脚本管理鼠标单击之间的绘图点,并对其进行插值以创建平滑线条。但是,插值逻辑似乎导致绘制的线出现在立方体的所有面上。
这是我的脚本的相关部分:
// 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);
}
我想修改这个脚本,这样当我在立方体的一个面上绘图时,更改仅限于该特定的面。我怎样才能做到这一点?我应该修改插值逻辑,还是有更好的方法来处理在立方体的各个面上绘制?