首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为崎岖的线条创建正方形结果

为崎岖的线条创建正方形结果
EN

Stack Overflow用户
提问于 2019-06-04 11:30:52
回答 1查看 49关注 0票数 0

我使用以下代码创建一个使用行渲染器的正方形

代码语言:javascript
复制
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时

代码语言:javascript
复制
    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));

结果是可怕的

有解决办法吗?我只需要一个小方块。我试着缩小尺寸,但这个还是不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-04 11:50:45

我可以肯定这种行为对于小值来说有点奇怪。

如果这是一种选择,你真的可以简单地缩小它。此外,我还会制作alignment TransformZ,它也非常平缓了结构:

代码语言:javascript
复制
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;
}

然而,为了更容易地处理,我建议使用

代码语言:javascript
复制
    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并相应地设置值(当然,只有当框架不应该在之后移动时才能工作)

代码语言:javascript
复制
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));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56442998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档