我使用以下代码创建一个使用行渲染器的正方形
public class CreateLine : MonoBehaviour
{
// Start is called before the first frame update
LineRenderer lr;
void Start()
{
lr = gameObject.AddComponent<LineRenderer>();
lr.material = new Material(Shader.Find("Sprites/Default"));
lr.positionCount = 4;
lr.startWidth = .13f;
lr.endWidth = .13f;
lr.SetPosition(0, new Vector3(0, -2, -1));
lr.SetPosition(1, new Vector3(2, -2, -1));
lr.SetPosition(2, new Vector3(2, 0, -1));
lr.SetPosition(3, new Vector3(0, 0, -1));
lr.loop = true;
lr.useWorldSpace = false;
Gradient gradient = new Gradient();
gradient.SetKeys(
new GradientColorKey[]
{
new GradientColorKey(Color.red, 1f),
},
new GradientAlphaKey[] { new GradientAlphaKey(1f, 0.0f)
}
);
lr.colorGradient = gradient;
}输出:

它工作得很好,线条是光滑的,但是当我用下面的代码将向量点降为1时
lr.SetPosition(0, new Vector3(0, -1, -1));
lr.SetPosition(1, new Vector3(1, -1, -1));
lr.SetPosition(2, new Vector3(1, 0, -1));
lr.SetPosition(3, new Vector3(0, 0, -1));结果是可怕的

有解决办法吗?我只需要一个小方块。我试着缩小尺寸,但这个还是不起作用。
发布于 2019-06-04 11:50:45
我可以肯定这种行为对于小值来说有点奇怪。
如果这是一种选择,你真的可以简单地缩小它。此外,我还会制作alignment TransformZ,它也非常平缓了结构:
private void Start()
{
lr = gameObject.AddComponent<LineRenderer>();
lr.material = new Material(Shader.Find("Sprites/Default"));
lr.positionCount = 4;
lr.startWidth = 0.13f;
lr.SetPosition(0, new Vector3(0, -2, -1));
lr.SetPosition(1, new Vector3(2, -2, -1));
lr.SetPosition(2, new Vector3(2, 0, -1));
lr.SetPosition(3, new Vector3(0, 0, -1));
lr.loop = true;
lr.useWorldSpace = false;
var gradient = new Gradient();
gradient.SetKeys(new[] { new GradientColorKey(Color.red, 1f), }, new[] { new GradientAlphaKey(1f, 0.0f) });
lr.colorGradient = gradient;
lr.alignment = LineAlignment.TransformZ;
transform.localScale = Vector3.one * 0.5f;
}

然而,为了更容易地处理,我建议使用
lr.SetPosition(0, new Vector3(-1, -1, 0));
lr.SetPosition(1, new Vector3(-1, 1, 0));
lr.SetPosition(2, new Vector3(1, 1, 0));
lr.SetPosition(3, new Vector3(1, -1, 0));因此,框架以对象为中心。
或者,如果它是一个选项,使用useWorldSpace = true并相应地设置值(当然,只有当框架不应该在之后移动时才能工作)
lr.useWorldSpace = true;
lr.SetPosition(0, transform.position + new Vector3(-0.5f, -0.5f, 0));
lr.SetPosition(1, transform.position + new Vector3(-0.5f, 0.5f, 0));
lr.SetPosition(2, transform.position + new Vector3(0.5f, 0.5f, 0));
lr.SetPosition(3, transform.position + new Vector3(0.5f, -0.5f, 0));https://stackoverflow.com/questions/56442998
复制相似问题