【Unity开发小技巧】使用LineRenderer画圆
原创
©著作权归作者所有:来自51CTO博客作者幻世界儿的原创作品,请联系作者获取转载授权,否则将追究法律责任
欢迎加入Unity业内qq交流群:956187480
以下只是常规的思路,其实还有更简单的也就是每一度加一个点,360度就360个点,仅供参考
public class NewBehaviourScript : MonoBehaviour
{
Vector3 v; //圆心
float R; //半径
int positionCount; //完成一个圆的总点数,
float angle; //转角,三个点形成的两段线之间的夹角
Quaternion quaternion; //Quaternion四元数
LineRenderer line; //LineRenderer组件
void Start()
{
v = new Vector2(0, 0);
R = 6;
positionCount = 180;
angle = 360f / (positionCount - 1);
line = GetComponent<LineRenderer>();
line.positionCount = positionCount;
}
void Update()
{
DrawCircle();
}
void DrawCircle()
{
for (int i = 0; i < positionCount; i++)
{
if (i != 0)
{
//默认围着z轴画圆,所以z值叠加,叠加值为每两个点到圆心的夹角
quaternion = Quaternion.Euler(quaternion.eulerAngles.x, quaternion.eulerAngles.y, quaternion.eulerAngles.z + angle);
}
//Quaternion与Vector3的右乘操作(*)返回一个将原有向量做旋转操作后的新向量.列如:Quaternion.Euler(0, 90, 0) * Vector3(0.0, 0.0, -10) 相当于把向量Vector3(0.0, 0.0, -10)绕y轴旋转90度,得到的结果为Vector3(-10, 0.0.0.0)
Vector3 forwardPosition = v + quaternion * Vector3.down * R;
line.SetPosition(i, forwardPosition);
}
}
}
欢迎加入Unity业内qq交流群:956187480