如何移动线条渲染器作为其游戏对象移动

时间:2017-11-09 16:45:28

标签: c# unity3d

我创建了一个空的游戏对象,并通过脚本为其添加了一个Line Renderer组件。我想,一旦我调整了游戏对象的位置,对于线条渲染器也会这样做,但事实并非如此。

我尝试了WITH vendors_distance as ( SELECT *, 2 * 3961 * asin(sqrt((sin(radians((latitude - 40.2817993164062) / 2))) ^ 2 + cos(radians(40.2817993164062)) * cos(radians(latitude)) * (sin(radians((longitude - -111.720901489258) / 2))) ^ 2)) as distance FROM vendors WHERE ( category = 'Food' ) AND (nationwide IS FALSE OR nationwide is NULL) ) SELECT vendors_distance.*, (SELECT json_agg(deals.*) FROM deals WHERE vendors_distance.id = deals.vendorid) as deals FROM vendors_distance WHERE (distance < 80) ORDER BY featured ASC, created DESC, distance ASC ,但它完全改变了使得以下几点成直线的位置,尽管我能够将游戏对象移动到该线。

useWorldSpace = false

有没有办法可以将点转换为输入我更熟悉的点(以便上述点之类的点不会产生直线)或者我应该以不同的方式处理问题?我对另一种方法持开放态度。

更新

我想我留下了一个导入细节。我将使用由线条渲染器制作的线条来创建形状。因此,我需要能够移动线条以移动形状,因此我不必总是重新计算线条的起点和终点。

2 个答案:

答案 0 :(得分:4)

您只需要为其应用偏移量。获取行渲染器位置+ Start函数中GameObject的当前位置。将该偏移量应用于LineRender函数中的Update

public Vector3 beginPos = new Vector3(-1.0f, -1.0f, 0);
public Vector3 endPos = new Vector3(1.0f, 1.0f, 0);

Vector3 beginPosOffset;
Vector3 endPosOffset;

LineRenderer diagLine;

void Start()
{
    diagLine = gameObject.AddComponent<LineRenderer>();
    diagLine.material = new Material(Shader.Find("Sprites/Default"));
    diagLine.startColor = diagLine.endColor = Color.green;
    diagLine.startWidth = diagLine.endWidth = 0.15f;

    diagLine.SetPosition(0, beginPos);
    diagLine.SetPosition(1, endPos);

    //Get offset
    beginPosOffset = transform.position - beginPos;
    endPosOffset = transform.position - endPos;
}

void Update()
{

    //Calculate new postion with offset
    Vector3 newBeginPos = transform.position + beginPosOffset;
    Vector3 newEndPos = transform.position + endPosOffset;

    //Apppy new position with offset
    diagLine.SetPosition(0, newBeginPos);
    diagLine.SetPosition(1, newEndPos);
}

答案 1 :(得分:0)

问题在于您假设线条渲染器的工作原理。

您发布的两个Vector3对象都不是分数,而是方向。

看一下Debug.DrawLine()之间的区别,这是你假设线条渲染器的工作方式,而Debug.DrawRay()就是它实际工作的方式。