Pro*_*mer 4 c# unity-game-engine
您可以使用 Transform 属性在 Unity 中旋转任何可视对象。一个例外是LineRenderer
. 您不能使用 transform 属性移动或旋转它。
LineRenderer
与SetPosition
orSetPositions
函数一起移动,因此我设法通过变换位置属性使其可移动,但我也无法使其旋转。
下面是我用来使它可移动的代码。
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 - diagLine.GetPosition(0);
endPosOffset = transform.position - diagLine.GetPosition(1);
}
void Update()
{
//Calculate new postion with offset
Vector3 newBeginPos = transform.position + beginPosOffset;
Vector3 newEndPos = transform.position + endPosOffset;
//Apply new position with offset
diagLine.SetPosition(0, newBeginPos);
diagLine.SetPosition(1, newEndPos);
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用与以前相同的方法使其能够旋转,但我陷入了获取偏移量的第一步,因为无法访问旋转变量 forLineRenderer
但有一个用于访问位置GetPosition
。
如何获得LineRenderer
旋转或如何LineRenderer
从 Transform 属性进行旋转?
下图显示了LineRenderer
使用和不使用上述脚本时的行为。位置现在可以使用上面的脚本启用但旋转不是。
您可以使用转换的localToWorldMatrix
:
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);
}
void Update()
{
//Calculate new postion
Vector3 newBeginPos = transform.localToWorldMatrix * new Vector4(beginPos.x, beginPos.y, beginPos.z, 1);
Vector3 newEndPos = transform.localToWorldMatrix * new Vector4(endPos.x, endPos.y, endPos.z, 1);
//Apply new position
diagLine.SetPosition(0, newBeginPos);
diagLine.SetPosition(1, newEndPos);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6828 次 |
最近记录: |