效果

场景搭建

创建一个空物体,并将其命名为 “GameManager”,并【Reset】它

创建一个 “Sphere”,并将其【Scale】设置为(0.1,0.1,0.1)

创建一个 “Cube”,并将其【Scale】设置为(0.1,0.1,0.1)

创建一个 “Material”,并将其命名为 “line”,设置其颜色为黑色,并把它拖到【Cube】上



把 Sphere 和 Cube 拖到事先创建好的 “Prefabs” 文件夹中使其变成一个【预制体】,然后把场景中的物体删除

把 “DrawCurve” 脚本拖拽到 “GameManager” 物体上,并把两个预制体拖到相应的变量槽上

源码

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class DrawCurve : MonoBehaviour
{
// 余弦函数曲线的方块
[SerializeField] private GameObject spherePrefab;
// 坐标轴的方块
[SerializeField] private GameObject linePrefab; [SerializeField] private float k = 5f;
private float x = 0f;
private float y = 0f; private float posX = 0f;
private float posY = 0f; private ArrayList list = new ArrayList();
private int destroyIndex = 0; void Start()
{
// 纵坐标
for (int i = 0; i < 100;i++ )
{
GameObject obj = Instantiate(linePrefab, transform.position, Quaternion.identity);
obj.transform.position = new Vector3(0, posY, 1f);
posY += 0.1f;
}
// 横坐标
for (int i = 0; i < 100; i++)
{
GameObject obj = Instantiate(linePrefab, transform.position, Quaternion.identity);
obj.transform.position = new Vector3(posX, 0, 1f);
posX += 0.1f;
} } void Update()
{
if (Input.GetKey(KeyCode.A))
{
// 计算位置
x += 0.1f;
y = Mathf.Sin(x);
// y = Mathf.Cos(x);
// y = Mathf.Tan(x);
// y = k / x; // 生成【cube】并且设置它们的位置
GameObject obj = Instantiate(spherePrefab, transform.position, Quaternion.identity);
obj.transform.position = new Vector3(x, y, 0);
// 把生成的【cube】存储到动态数组中,并用一个变量记录最后一个【cube】的下标
list.Add(obj);
destroyIndex = list.Count - 1;
}
if (Input.GetKey(KeyCode.D))
{
// 防止数组下标越界
if (destroyIndex >= 0)
{
// 从动态数组中拿到要销毁的【cube】
GameObject obj = (GameObject)list[destroyIndex]; // 把删除的【cube】的坐标值赋值给 x 和 y
// 当按下 A键 的时候,会继续沿着删除的【cube】的位置画下去
// x 位置后面减去【0.1f】是因为把最后删除的【cube】的 x坐标值 赋值给生成的【cube】时
// 第 46 行代码在计算的时候会加上0.1f,就是在最后删除的【cube】的x位置上加0.1f
// 最后得到的就不是最后删除的【cube】的x坐标
x = obj.transform.position.x - 0.1f;
// 销毁【cube】
Destroy(obj);
// 从动态数组中移除【cube】对象,令数组的长度减一
list.RemoveAt(destroyIndex--);
}
}
}
}

用【Unity】中的【3D Object】画【数学函数】图形 —— 正弦函数... { }的更多相关文章

  1. Python 绘制你想要的数学函数图形

    Python 非常热门,但除非工作需要没有刻意去了解更多,直到有个函数图要绘制,想起了它.结果发现,完全用不着明白什么是编程,就可以使用它完成很多数学函数图的绘制. 通过以下两个步骤,就可以进行数学函 ...

  2. 关于Unity中的3D拾取

    3D拾取 3D游戏实际上看到的是2D画面,我们在屏幕上点击,想要找到哪个3D物体,我们实际上是在一个2维平面内做3D拾取. 3D拾取实际上是,当玩家点击屏幕的时候,会从显示屏幕的摄像头发射一条射线,射 ...

  3. 使用代码给Unity中的动画片段绑定回调函数

    在制作动作游戏的时候,需要播放许多动画,同时还有个需求,那就是动画播放到一定时间时,给一个回调函数,好做对应的状态变更, 我查了一下,发现如果使用的是unity自带的动画系统,要做到这样的话,需要这样 ...

  4. Tip8:Unity中诸如 Awake() Start() Update()等函数的 执行顺序

    Unity脚本中有很多的事件函数,下面是各种函数的执行顺序: 1.reset(); 2.Awake(); 3.OnEnable; 4.OnLevelWasLoaded(); 5.Start(); 6. ...

  5. 小小知识点(三十五)MATLAB中如何更改所画Figure的图形比例

    1. 打开一个figure,show plot tools and dock figure 2.选择图形的 more properties 3. 选择aspect ratio中的plotboxaspe ...

  6. unity中三种调用其他脚本函数的方法

    第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名()第二种,GameObject.Find("脚本所在的物体的名字").SendMessage(" ...

  7. 浅谈unity中gamma空间和线性空间

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概述 很久没有写文章了,今天写一篇对gamma空间和线性空间的个人理解总结,在查阅和学习了各个资料后,算是一个个人笔记 ...

  8. 游戏的物理和数学:Unity中的弹道和移动目标提前量计算

    下载地址:https://www.jianguoyun.com/p/DZPN6ocQ2siRBhihnx8 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺 ...

  9. 3D语音天气球(源码分享)——在Unity中使用Android语音服务

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...

  10. Unity UGUI和特效(含粒子系统和3D Object)之间层级问题

    撰写本文时使用Unity的版本为2017.4.10f1(64bit) 1.描述问题 需求:通过UGUI制作一个界面之后,我需要在界面的后面跟前面各添加一个特效. 问题:同一层级UI是最后渲染的,所以U ...

随机推荐

  1. ms08-067漏洞复现

    一.环境说明 kali linux 靶机是 XP (xp启动445) 二.nmap扫描主机存在的漏洞 root@kali:~# nmap --script smb-vuln* 192.168.244. ...

  2. 论文解读(LG2AR)《Learning Graph Augmentations to Learn Graph Representations》

    论文信息 论文标题:Learning Graph Augmentations to Learn Graph Representations论文作者:Kaveh Hassani, Amir Hosein ...

  3. zabbix实时监控mysql业务数据

    1. 安装zabbix agent 下载zabbix:过往的软件包都有:https://sourceforge.mirrorservice.org/z/za/zabbix/ZABBIX%20Lates ...

  4. 零基础学Java(3)运算符

    运算符 运算符用于连接值.Java提供了一组丰富的算术和逻辑运算符以及数学函数. 算术运算符 在Java中,使用算术运算符+.-.*./表示加.减.乘.除运算.当参与/运算的两个操作数都是整数时,表示 ...

  5. CSS Houdini:用浏览器引擎实现高级CSS效果

    vivo 互联网前端团队-Wei Xing Houdini被称之为Magic of styling and layout on the web,看起来十分神秘,但实际上,Houdini并非什么神秘组织 ...

  6. 攻防世界 miscmisc

    63.miscmisc(感觉这题挺有意思的,单独拿出来记录一下) 得到一张png,扔进kali中,foremost得到两个zip,打开其中一个,发现一张jpg和一个加密的zip,在jpg中分离出一个z ...

  7. OGC WebGIS 常用服务标准(WMS/WMTS/TMS/WFS)速查

    本文只介绍实际工作中常用的 WMS.WMTS.WFS.TMS 四种,WCS.WPS 等其它 OGC WebService 类型请自行查阅官方资料. 目录 0. 参数传递方式 1. WMS 速查 1.1 ...

  8. while循环和dowhile

    while循环语句 根据条件来选择是否执行循环体内的执行语句 while语句会循环判断条件是否成立只要成立就会执行,直到条件不匹配循环结束 int a = 0: while(a<10){ a++ ...

  9. Java语言的跨平台性

    2.1 Java虚拟机 -- JVM JVM:Java虚拟机,简称JVM,是运行所有java程序的假想计算机,是java程序的运行环境,是java最具吸引力的特性之一,我们编写的java代码都运行在J ...

  10. 『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗

    『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗 每周学点MGR知识. 1. 三节点的MGR集群,有两个节点宕机后还能正常工作吗 要看具体是哪种情况. 如果两个节点是正常关闭的话,则 ...