今天心血来潮,想搞点有意思的玩意儿,于是就有这个“模拟大自然”的小项目。也没啥高大上的,就是用代码模拟一下自然现象,听起来挺玄乎,做起来还挺好玩。
灵感来源
一开始也没啥具体想法,就是刷手机的时候,看到一些自然风光的视频,什么风吹麦浪,雨滴落下,就觉得,诶,这些东西能不能用代码给它整出来?然后就动手开干!
准备工作
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
要说准备,也没啥特别的。我这儿就一台破电脑,平时敲敲代码还行。软件嘛就用个Processing,这玩意儿简单好上手,画个图啥的方便。
开干!
1. 先画个圈圈:
我一开始想模拟雨滴,那就先得有“水”?于是我就用 Processing 画一堆小圆圈,当做水滴。这步简单,几行代码就搞定。
- 先用
size()
函数设置画布大小。 - 然后用
ellipse()
函数画圆圈,调整一下大小和位置。 - 用
fill()
函数给圆圈上个色,蓝蓝的,像水滴。
2. 让圈圈动起来:
光画圈圈不行,得让它们动起来才像样。我琢磨着,雨滴不是往下掉吗?那就给它们加个速度,让它们往下“流”。
- 给每个圆圈加个变量,记录它们的垂直位置。
- 在
draw()
函数里,每次都更新这个位置,让它往下移动一点点。 - 加点随机性,让每个圆圈的速度不一样,这样看起来更自然。
3. 来点风的效果:
光下雨没意思,再来点风!我想象着风吹过水面,水滴会飘来飘去。那就再给圆圈加个水平方向的速度。
- 跟垂直方向一样,给每个圆圈再加个变量,记录水平位置。
- 在
draw()
函数里,也更新这个位置,让它左右移动。 - 用
noise()
函数来模拟风,这玩意儿能生成一些随机但又平滑的数值,让风看起来更真实。
4. 搞点互动:
光看着圈圈动也没啥意思,不如加点互动。我寻思着,能不能用鼠标去“拨动”这些水滴?
- 用
mouseX
和mouseY
获取鼠标的位置。 - 计算鼠标位置和每个圆圈的距离。
- 如果距离够近,就给圆圈加个力,让它往鼠标的方向移动。
最终效果
经过一番折腾,最终效果还凑合。屏幕上有一堆蓝色的小圆圈,像水滴一样往下落,还带着点风吹的效果。用鼠标去碰它们,它们还会跟着鼠标动,有点像在拨动水面。虽然离真正的“大自然”还差得远,但自己动手做出来的,看着还挺有成就感!
这回的分享就到这儿,下次再捣鼓出啥好玩的再来跟大家唠嗑!