创建方形结果为崎岖不平的线条
Creating a square results to rugged line
我正在使用此代码使用线条渲染器创建一个正方形
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));
结果很糟糕
有解决办法吗?我只需要一个小广场。我尝试缩放尺寸,但这仍然不起作用。
我可以确认小值的行为有点奇怪。
如果这是一个选项,您确实可以简单地缩小它。另外我会做 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));
我正在使用此代码使用线条渲染器创建一个正方形
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));
结果很糟糕
有解决办法吗?我只需要一个小广场。我尝试缩放尺寸,但这仍然不起作用。
我可以确认小值的行为有点奇怪。
如果这是一个选项,您确实可以简单地缩小它。另外我会做 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));