PICO-8

创建于:2017-11-26

创建人: Humble Ray

5 信息 26 成员
Fantasy Console 的代表 PICO-8 小巧精美多变

pico-8 精彩代码解析 2

83872309 2019-10-21

Image title

作者:2DArray 

来源:twiiter

神奇的漩涡效果,代码发布在作者的twitter上,整理下只有11行:

p={130,141,2,136,8,137,142,9}
for i=1,8 do
pal(i-1,p[i],1)
end
::_::
x=rnd(128)
y=rnd(128)
d=sqrt((x-64)^2+(y-64)^2)-t()*4
a=atan2(y-64,x-64)*16
pset(x,y,(a+d/4)%8)
goto _

1-4行代码是调色板映射代码,用来实现渐变的颜色。我们知道pico8只有16种颜色,16种颜色很难配合出渐变的过渡效果。这里作者用到pico8隐藏的调色板,变量p中的130,141,136,137,142都是隐藏调色板的色号。这个隐藏的调色板在官方文档里也没有介绍,在论坛翻了了好久才找到,新旧两个调色板的对比,我做了个对比图:

Image title

6-9行定义了4个参数:

  • x,y 在屏幕范围内随机取值
  • d 是取的点(x,y)相对于(64,64)即中心点的距离,后面的t()*4 是为了使距离根据运行时间改变
  • a 是点(x,y)相对于中心点的角度,pico8中atan2的返回值是0-1,对应这0°-360°。后面的*16将a的取值变成了0-16

第10行 根据d 和 a的值将对应颜色填充到x,y。我们可以分开来看下

Image title


pset(x,y,a%8)

如果只用a来计算,会将屏幕按照点的到中间点的角度分割成16份,这个比较好理解,因为a的取值是0-16,相当于把屏幕中的点映射到16个区域。


Image title

pset(x,y,(d/4)%8)

d是点到中心的距离,相同距离的圆形区域被填充同一个颜色。


Image title


pset(x,y,(a+d/4)%8)

当把角度和距离加起来的时候神奇的图像就出现了,而且角度a必须于8的倍数相乘才可以对齐,不知道原理是什么,真的很神奇。

Image title


(转发自:原日志地址

近期喜欢的会员

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册