【捣蛋猪新创/电路】开造之前:魔方(重制)
游戏作者:原野与森林

今天我来带着大家在新创unity中手搓魔方
首先,我们要先认识一下魔方
“魔方,又叫鲁比克方块,最早是由匈牙利布达佩斯建筑学院厄尔诺·鲁比克教授于1974年发明的机械益智玩具。魔方拥有竞速、盲拧、单拧等多种玩法,风靡程度经久未衰,每年都会举办大小赛事,是最受欢迎的智力游戏之一。
通常意义下的魔方,是指狭义的三阶魔方。三阶魔方形状通常是正方体,由有弹性的硬塑料制成。常规竞速玩法是将魔方打乱,然后在最短的时间内复原。广义的魔方,指各类可以通过转动打乱和复原的几何体。”
—来自百度百科
众所周知:魔方是一个有六个面的正方体。(这里魔方的含义取狭义的三阶魔方)
国际上规定蓝色在正面,红色在右面,黄色在上面(可以推得蓝色的反面绿色在后面,同理,橙色在左面,白色在下面)

网络上通用的魔方的公式中
F代表Front 前面,即正面顺时针转90度
U代表Up 上面,即上面顺时针转90度
R代表Right 右面,即右面顺时针转90度
B Behind 后面,D Down 下面,L Left 左面 以此类推
而F'(右上角加了“ ' ",这个代表逆时针)则是正面逆时针旋转90度,同样可以以此类推


好了,我们已经基本认识了魔方,现在我们将在新创中实现关于魔方的功能

魔方是一个三维的正方体,而捣蛋猪却是一个2d沙盒游戏,所以如何在捣蛋猪中里表现出魔方成为了一个难题
有两种思路:展开图和投影
由于投影表示有些不太真实(指因为光柱长度固定,角度只有45度,而导致造出的效果不太立体,且布线体积增大),所以我选择了展开图表示



如何表示色块也是一个难题,在捣蛋猪中,染色框生成器和染色框套光柱都可以表示颜色
使用光柱是毋庸置疑的,因为它延迟低,占地小,但是颜色很淡,需要虚化重叠

目测,五个光柱就能带来不错的视觉效果(不错的视觉效果:指看起来不是很淡)

好了,现在边边角角等问题已经解决了

正文开始(如何将魔方“转动”)
在上一篇专栏中,我用了时序电路和极其复杂的卡诺图,荒谬地认为魔方转动可以使用常规的时序电路实现,冷静下来的计算令我冷汗直冒,我察觉到那样的魔方需要(2*6)+6=18个输入和16*9*6*6=5184个输出,即使每个输入和输出用导线“硬连”起来,且我的想法正确,它的工作量也是我无法承受的。

于是我采用了新的想法,

为了方便理解,这里只给出了魔方每个面的中心块
说一下这个图表示什么意思,FRU分别表示正面、右面和上面的中心块的颜色信息,在复原的状态下,F的颜色信息是蓝色,R的是红,其它不必多说。
将整个魔方在复原状态下以正面和后面的中心连线所在的直线为轴,顺时针转动90度,即Z
仅看中心红色块,中心红色块会移动到底面的中心处,在这个过程中,电路会将颜色信息从R传递到了D',随后,D'将颜色信息传递到D。同样,D会把颜色信息传递给L',R'也会接收到来自U的颜色信息。
数据的传播路径可以通过晶体管的起到开关作用控制。因此,魔方的转动被实现了。

不过,随之而来的还有一些小问题,由于魔方有六个颜色,需要三根数据线表示,这会导致布线体积病态增大。

感谢@天平搞不懂哎提供了同步通信电路使一根数据线代替三个根成为了可能。

经过我的简单运算,魔方仅是电路部件,可能就需要40000+。面对如此庞大的电路,放大屏幕触发一个大的高电平很不现实。
于是我造了这个

“触发物是鼠标,触发物是鼠标!”
完