您当前的位置: 首页 >  unity

幻世界

暂无认证

  • 0浏览

    0关注

    237博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Unity开发小技巧】使用LineRenderer画圆

幻世界 发布时间:2020-01-13 14:29:34 ,浏览量:0

 欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

以下只是常规的思路,其实还有更简单的也就是每一度加一个点,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();
        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

qq扫描二维码加群

关注
打赏
1660704426
查看更多评论
立即登录/注册

微信扫码登录

0.0380s