Unityで円を描画する
参考URL:https://baba-s.hatenablog.com/entry/2019/10/18/110000
Line Rendererを使用し、円状に点を配置することで実装
[SerializeField] private LineRenderer m_lineRenderer = null; // 円を描画するための LineRenderer
[SerializeField] private float m_radius = 0; // 円の半径
[SerializeField] private float m_lineWidth = 0; // 円の線の太さ
[SerializeField] private float center_x = 0; // 円の中心座標
[SerializeField] private float center_y = 0; // 円の中心座標
private void Reset(){
m_lineRenderer = GetComponent<LineRenderer>();
}
private void Awake(){
int segments = 380;
m_lineRenderer.startWidth = m_lineWidth;
m_lineRenderer.endWidth = m_lineWidth;
m_lineRenderer.positionCount = segments;
var points = new Vector3[segments];
for (int i = 0; i < segments; i++){
var rad = Mathf.Deg2Rad * (i * 380f / segments);
var x = center_x + Mathf.Sin(rad) * m_radius;
var y = center_y + Mathf.Cos(rad) * m_radius;
points[i] = new Vector3(x, y, 0);
}
m_lineRenderer.SetPositions(points);
}
segmentsの値が360でないのは、360にするとLine Rendererの両端が十分に重なってなく、円が一部欠けたように見えてしまうからです。