我创建了一个空的游戏对象,并通过脚本为其添加了一个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
有没有办法可以将点转换为输入我更熟悉的点(以便上述点之类的点不会产生直线)或者我应该以不同的方式处理问题?我对另一种方法持开放态度。
更新
我想我留下了一个导入细节。我将使用由线条渲染器制作的线条来创建形状。因此,我需要能够移动线条以移动形状,因此我不必总是重新计算线条的起点和终点。
答案 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()就是它实际工作的方式。