用户:
sssssssssssss查看:18 回复:19 评论:18 创建时间:2020-08-22T13:41:37
大家不好我是奆嘴喵666
上期教程有人说用抖动积木可以做,但是抖动积木做不出大幅度的抖动
这一期,我们讲如何做旋转屏幕特效,先来看看效果(鼠标左键旋转屏幕)
------------------------------------教程分割线------------------------------------
我们先画出这些角色(这里第一个角色的名字要写成旋转中心点):

(注意:第一个角色是空的)
然后我们给后三个角色各新增以下角色变量:

然后,我们新增以下几个全局变量:

喵,好像只有一个(
)
然后我们给这三个角色拼接以下代码:

最后,我们只需要 增加/减少 变量“屏幕旋转度数”就可以达到旋转屏幕的效果:

最后运行,旋转特效就做出来了!
-----------------萌新不用懂分割线-----------------
你们看完可能会说:诶呀奆嘴喵你个**!!!你这代码很多都是多余的,你可以直接在旋转中心点角色里写如下代码:

对,这样没有任何问题,但是这样就不能做到把上期教程和本期教程的效果融合在一起了。不信你自己试试(正确的融合方式下期教程我会讲)。
你们还可能会说:诶呀奆嘴喵你真是个****的**,真的太**了,你为什么非要这么写

直接这么写不行???!!!

其实这样根本无法运行,我们先来说说
这个玩意有什么用
如果你学过“互斥锁”,那你应该知道,当有多个线程运行时,如果一个线程正在对一个对象进行更改,而另一个线程也在更改或使用它,那么就有可能导致读出来的数据不正确,想解决这个问题就可以使用互斥锁,但是这里就不多说互斥锁是什么玩意怎么用什么的了(讲的有点不好)。
在这里我们不使用互斥锁,因为“屏幕旋转度数”没有什么特殊的格式,不管怎么读入它就是一个数字。举个例子,不知道大家有没有考虑过这种情况,我们想要实现角色先移动一次一个变量的距离,等待一会再移动相同的距离:

解决这个问题可以这么做:

虽然,如果去掉等待0.1秒,这种情况很少或者永远不会发生,但是保险起见,还是应该这么做。
“本次旋转度数”和上面的“暂时存储”是一个用处的。
“上回旋转”变量也大概是这个用途,它存储的是上一次旋转的度数,执行下一次旋转之前首先要复位。
讲这么多我都快累喵了,好了,结束了。