扇形攻击范围:使用LineRenderer模拟扇形攻击范围:新建场景,新建一个Cube,此脚本挂在Cube上;
- public class DrawSector : MonoBehaviour {
- void Start()
- {
- }
- void Update()
- {
- if (Input.GetKeyDown(KeyCode.S))
- {
- //ToDrawCircle(transform,transform.localPosition, 3);
- ToDrawSector(transform, transform.localPosition, 60, 3);
- }
- }
- private static LineRenderer GetLineRenderer(Transform t)
- {
- LineRenderer lr = t.GetComponent<LineRenderer>();
- if (lr == null)
- {
- lr = t.gameObject.AddComponent<LineRenderer>();
- }
- lr.startWidth = 0.1f;
- lr.endWidth = 0.1f;
- //lr.startColor = Color.red;
- //lr.endColor = Color.red;
- return lr;
- }
- /// <summary>
- /// 画弧度角
- /// </summary>
- /// <param name="t"></param>
- /// <param name="center"></param>
- /// <param name="angle"></param>
- /// <param name="radius"></param>
- private void ToDrawSector(Transform t, Vector3 center, float angle, float radius)
- {
- LineRenderer lr = GetLineRenderer(t);
- int pointAmmount = 100;
- float eachAngle = angle / pointAmmount;
- Vector3 forward = t.forward;
- lr.positionCount = (pointAmmount + 1);
- lr.SetPosition(0, center);
- for (int i = 1; i <= pointAmmount; i++)
- {
- Vector3 pos = Quaternion.Euler(0, -angle / 2 + eachAngle * (i - 1), 0) * forward * radius+center;
- lr.SetPosition(i,pos);
- }
- lr.SetPosition(pointAmmount, center);
- }
- }