『Catlike系列教程』第二篇来了~今天周六,早上(上午11点)醒来去超市买了一周的零食回来以后就玩了一整天游戏非常有负罪感。现在晚上九点天还亮着感觉像下午7点左右的样子好像还不是很晚。。。所以就写一点东西吧。这一篇是「Building a Graph」挑战一下试试吧。
PART 1 概述
那么大概文章看下来我们预计要做以下事情。
- 使用一定数量的小方块表达函数图像
- 做一个 Shader 给图像上色使其更好看
- 给图像传入时间参数使其动起来
PART 2 画函数图像
首先我们确认一下要支持的功能细节,根据默认摄像机的位置和视野我们就暂定需要画出函数[-1. 1]之间的图像,同时可以通过一个条拖动来修改函数的解析度,假设解析度可以是[10,100],那么我们需要在x=[-1, 1]之间生成[10,100]个方块。同时动态的调整方块的大小使其完美衔接。代码如下:
public class GraphController : MonoBehaviour
{
[Range(10, 100), SerializeField] private int _resolution;
[SerializeField] private GameObject _cube;
// Use this for initialization
private void Start ()
{
_cube.SetActive(false);
var step = 2f / _resolution;
var startPosX = -1f;
var scale = Vector3.one * step;
for (int i = 0; i < _resolution; i++)
{
var pos = new Vector3(startPosX + i * step, Calc(startPosX + i * step), 0);
var point = Instantiate(_cube, transform);
point.transform.localPosition = pos;
point.transform.localScale = scale;
point.SetActive(true);
}
}
private float Calc(float x)
{
return Mathf.Pow(x, 2);
}
}
根据Calc(float)
可以看出我们画出来曲线是如下函数的图像。