Unity3d:LineRenderer模拟英雄攻击范围扇形:

128 篇文章 1 订阅
64 篇文章 1 订阅

扇形攻击范围:使用LineRenderer模拟扇形攻击范围:新建场景,新建一个Cube,此脚本挂在Cube上;

  1. public class DrawSector : MonoBehaviour {
  2.     
  3.     void Start()
  4.     {
  5.         
  6.         
  7.     }
  8.  
  9.     void Update()
  10.     {
  11.         if (Input.GetKeyDown(KeyCode.S))
  12.         {
  13.             //ToDrawCircle(transform,transform.localPosition, 3);
  14.             ToDrawSector(transform, transform.localPosition, 60, 3);
  15.         }
  16.         
  17.     }
  18.     private static LineRenderer GetLineRenderer(Transform t)
  19.     {
  20.         LineRenderer lr = t.GetComponent<LineRenderer>();
  21.         if (lr == null)
  22.         {
  23.             lr = t.gameObject.AddComponent<LineRenderer>();
  24.         }
  25.         lr.startWidth = 0.1f;
  26.         lr.endWidth = 0.1f;
  27.         //lr.startColor = Color.red;
  28.         //lr.endColor = Color.red;
  29.         return lr;
  30.     }
  31.     /// <summary>
  32.     /// 画弧度角
  33.     /// </summary>
  34.     /// <param name="t"></param>
  35.     /// <param name="center"></param>
  36.     /// <param name="angle"></param>
  37.     /// <param name="radius"></param>
  38.     private void ToDrawSector(Transform t, Vector3 center, float angle, float radius)
  39.     {
  40.         LineRenderer lr = GetLineRenderer(t);
  41.         int pointAmmount = 100;
  42.         float eachAngle = angle / pointAmmount;
  43.         Vector3 forward = t.forward;
  44.         lr.positionCount = (pointAmmount + 1);
  45.         lr.SetPosition(0, center);
  46.         for (int i = 1; i <= pointAmmount; i++)
  47.         {
  48.             Vector3 pos = Quaternion.Euler(0, -angle / 2 + eachAngle * (i - 1), 0) * forward * radius+center;
  49.             lr.SetPosition(i,pos);
  50.         }
  51.         lr.SetPosition(pointAmmount, center);
  52.     }
  53. }
     
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值