效果

场景搭建

创建一个空物体,并将其命名为 “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. UiPath参数介绍和使用

    一.参数介绍 用于将数据从一个项目传递到另一个项目.在全局意义上,它们类似于变量,因为它们动态地存储数据并传递给它.变量在活动之间传递数据,而参数在自动化之间传递数据.因此,它们使你能够一次又一次地重 ...

  2. 【黑马pink老师的H5/CSS课程】(二)标签与语法

    视频链接:P8~P29 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动 参考链接: HTML 元素 1.HTML语法规范 1.1 基本语法概述 HTML 标签是由尖 ...

  3. nginx 出现An error occurred错误

    原因是我nginx中conf文件的配置里面 location中的 这一块内容是 #注释的那两行 所以报错出现这个错误. 后来将这两行注释掉,改成这两个就好了. root html; index ind ...

  4. Halcon 条形码识别

    read_image (Image, 'C:/Users/HJ/Desktop/test_image/image.png') create_bar_code_model([], [], BarCode ...

  5. 测试人员假装自己会“devops”

    目录 什么是DevOps DevOps岗位职责 DevOps的要求 如何增强DevOps能力 准备 服务器端安装jenkins Jenkins jenkins + maven 构建 jenkins下m ...

  6. 泛型容器类和ArrayList操作

    泛型 比如ArrayList<E> E就是泛型 在没有泛型之前,从集合读取到的每一个对象都必须进行转换,如果有人不小心插入了类型错误的对象,在运行时的转换处理就会出错 有了泛型之后,可以告 ...

  7. antd vue 折叠面板 v-for 循环点击无效

    问题描述 实现一个折叠面板点击展开,但是必须点击两次才能展开,第一次无效 <a-collapse-panel v-for="(item, index) in dataMap" ...

  8. ModuleNotFoundError: No module named 'distutils.spawn'

    解决办法: 安装python3-distutils sudo apt-get install python3-distutils

  9. springboot java -jar指定启动的jar外部配置文件

    Limited Setting Effect 中文描述 Java 8 -Xbootclasspath:<path> Sets the search path for bootstrap c ...

  10. 【每天学一点-05】使用umi.js代理,解决跨域问题(前端)

    一.user.ts 前端请求接口 import request from 'umi-request'; const getAway = '/user'; // 获取用户列表 export const ...