Unity LineRenderer 根据圆的中心、半径、朝向在三维空间中画圆
在三维空间中生成一个圆,需要知道圆的中心点位置、圆的半径以及圆的朝向这三个参数,通过这三个参数求得在圆上的点坐标,最终通过LineRenderer组件将圆绘制出来:
首先从二维平面来看,我们已知圆的中心点(x0, y0),半径r,即可通过以下公式求得角度a的圆上的点坐标位置(x,y):
x = x0 + r * cos(a * 3.14 / 180)
y = y0 + r * sin(a * 3.14 / 180)
以Unity中的x轴、z轴形成的平面为例,假设我们每一度求得一个圆上的点坐标位置,通过360个坐标画出一个圆,代码如下:
运行上面的代码,即可得到在x、z轴所在的平面上以原点为中心,3为半径的通过Line Renderer组件绘制出的一个圆,如图所示:
圆上缺了一个口,我们可以通过将Line Renderer组件的Loop属性设置为true来处理,该属性设为true后,可以将第一个点和最后一个点相连,形成闭环:
有了上述在二维平面上绘制圆的基础后,在三维空间中绘制一个圆,需要添加一个参数,即圆的朝向,可以通过一个坐标点的位置减去圆的中心的位置求得该方向向量。在x、z轴所在的平面绘制出的圆,其朝向即Vector3.up,我们可以通过Quaternion类中的FromToRotation函数将该方向旋转到我们指定的方向,再通过向量与四元数相乘求得圆上的坐标位置:
我们将朝向在OnDrawGizmos函数中通过Handles类中的DrawLine方法绘制出来便于查看,该方法可以在Scene场景窗口中绘制出一条直线。关于OnDrawGizmos和Handles的介绍如下:
到此,已经可以在三维空间中绘制出圆,最终我们通过this关键字将其封装到Line Renderer类中作为拓展方法:
测试代码:
- 点赞
- 收藏
- 关注作者
评论(0)