用unity制作向外扩散的圆弧
2020-03-28 19:06
2667 查看
创建向外扩散的圆弧
话不多说,先放上效果图
接下来阐述一下思路
- 圆弧要向外扩散
- 半径线性增大
- 角度线性增大
- 算得新cube的坐标,在3d坐标系中,取两个坐标作为平面坐标即可。
半径和角度的线性增大很好处理,循环创建cube的同时给个恒定增量即可
而新cube的坐标需要通过计算
但实际上也很好想,就是计算出
1. cube在坐标系中x的增量
2. cube在坐标系中y的增量
其中,可以在平面坐标系中清晰地看到:
- x的增量为半径乘上变化角度余弦值
- y的增量为半径乘上变化角度正弦值
于是我们可以调用mathf类的Sin和Cos函数
但函数的参数,是弧度
弧度:弧长等于半径的弧,其所在的圆心角弧度为1;
==>即 周角(360度)为2PI弧度,平角(180度)为PI弧度
所以 将角度转换为弧度的表达式为:角度*PI/180
于是在csharp中我们可以通过如下代码
x=radius*Mathf.Cos(angle*Mathf.PI/180f); z=radius*Mathf.Sin(angle*Mathf.PI/180f);
来求得x,z的增量(这里是以x,z为平面坐标系创建目标圆弧)
有了x和z的增量,给我们的中心物体挂载脚本,以中心物体为圆心,即可以在unity中实现对应的效果
由于我们只考虑用cube实现发散开的圆弧,于是这里y不做变化,以标准的unity左手坐标系为准,以下为“平躺在地面上的发散圆弧”
void Start() { //定义旋转角度和增长半径 float angle=10f; float radius=1f; CreateCircle(radius,angle); } void CreateCircle(float radius,float angle) { //循环创建cube for (int i = 0; i < 1000; i++,angle+=10,radius+=1f) { //x为新cube的x,z为新cube的z 这里我以x-z为平面坐标系。 float x=transform.position.x+radius*Mathf.Cos(angle*Mathf.PI/180f); float z=transform.position.z+radius*Mathf.Sin(angle*Mathf.PI/180f); //创建cube并设置新cube的position GameObject.CreatePrimitive(PrimitiveType.Cube).transform.position=new Vector3(x,transform.position.y,z); } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Unity制作一个望远镜与查看器摄像机
- [Unity][UGUI][Animation]圆环进度条读条特效设置制作
- 教程:如何使用Unity制作3D版iOS游戏
- Unity教程之-制作闪亮的星星Star(一):动态的创建Mesh
- [教程] 究极 Unity 地形制作 - 极速创建华丽的游戏地形
- 【Unity技巧】制作一个简单的NPC
- 【unity】使用NGUI制作滚动列表
- unity学习之飞机大战制作 关键点(二)定义层级,以及设置主角动画
- BMFont中文字体图集制作的方法~(for unity ngui)
- Unity 制作Loading详解
- unity学习之飞机大战制作 关键点(四) 设置敌机和奖励物品的生成和随机
- unity的自己制作自己编辑器的教程以及制定框架的讲解(序)
- unity 编辑器的制作(二)
- 使用Unity制作俄罗斯方块游戏
- 如何使用Unity制作虚拟导览(四)
- unity制作体积光实现丁达尔效应
- Unity 制作类似RadiusFill 的SpriteRanderer Shader
- Unity手游制作记-通用输入管理器-测试案例
- Unity5.x制作合金弹头(四)-相机的跟随
- 【unity】利用sqlite制作排行榜