Scratch 之 创作小技巧 -- 让触碰效果更丝滑

今天小技巧的主题是——丝滑

a.让触碰效果更丝滑

——非线性放大

        相信大家,做游戏时都会有一开始按键吧,把鼠标放上去,这个按键就会有相应的变化,如放大,作为初学者,这段的代码可能是这样↓

        虽然看起来挺好的,但存在一个美观上的问题,太过于突兀,让人感受到一种不和谐的感觉,其实我们还可以增加一点视觉效果,就是慢慢放大↓

        这时效果好了很多,但是还没有达到丝滑的程度,如图种的代码大小放大到110就戛然而止,宛如一个刹车停止了这个放大,这时候,非线性就非常重要了,它的效果就是加速然后慢慢停止,就有丝滑的效果了↓↓↓

用法:

  1. 注意使用的是“将大小增加()”语句
  2. 增加的值的代码为(目标大小 - 现在大小) * 速度
  3. 速度v的取值范围为0<v<1

        为什么会出现丝滑效果呢?显而易见,就是每次增加大小的值越来越小,增加大小的值会变的原因是因为这个值中含有1个变量——大小,就是说,这个代码影响了大小,大小的改变影响了下次的大小改变,我们可以列个数据↓

目标大小 现在大小 本次增加大小 速度
110 100 2 0.2
110 102 1.6 0.2
110 103.6 1.28 0.2

        图表中的“现在大小”越来越大,“本次增加大小”越来越小,其实这段代码永远不会让角色大小达到110,只是无限接近,但效果达到了,相差0.0000000……01的大小就无关紧要。

        有些触碰效果不用大小改变,而是改用特效,如用下面这个代码↓

有效取值范围-100~100

        我们也可以用上面说的非线性来实现效果,只是没有当前角色亮度,那我们可以自创一个变量,最终代码如下图所示↓

用法也是一样的

        非线性可以用在转场,触碰效果中,让效果更丝滑,快去试试吧。


b.让移动更丝滑

——使用sin函数来移动

        我们拿一个萌新的作品为例↓

        这个“新游戏”角色是可以上下浮动的,是怎么做到的呢,难不成是重复执行10次将y坐标增加5然后再重复执行5次y坐标减小5?但这样就不够丝滑了。是非线性吗?有道理,但是有个代码实现起来更简洁,它就是sin代码↓

        这个代码在运算模块中用得最少的一个代码了,因为很少时候会用到它,但这个代码也可以让角色的移动更丝滑(指上下移动)。

        sin函数,是正切函数,三角函数家庭里的一员,百度上是这样解释的:于任意一个实数x都有唯一确定的值sinx与它对应,按照这个对应法则所建立的函数。

        总而言之就是当x为任意实数时, -1 ≤ sin(x) ≤ 1,图像如下图:

        这个图像成波浪形(对此感兴趣的可以上网查一下为什么),所以我们可以这样做↓

        注意:sin(i * 5) 不能替代sin(i) * 5 ,这里的5是让效果更明显(即范围变大),而i的值是决定速度的。


c.让操作更丝滑

——用鼠标坐标判定触碰

        我们还是以这名萌新的作品为例↓

        我们还是以“新游戏”这个角色为例,但这次不看它的移动,看它触碰时的效果,我们发现,触碰它时,亮起了光,所以代码是这样的

        真的是这样吗,但其实我们把鼠标放在字与字的中间,即鼠标没有碰到它,但它还是亮光,这是出现bug的吗?其实不是bug,而且这样的状态才符合逻辑,只要鼠标放在规定范围内就亮光,操作更便捷,怎么做到的?其实只要将判断条件改为这个就行了

        是不是很简单,但要注意几个点:

  1. 注意加上绝对值(abs)代码
  2. 里面的数值范围是这个造型的宽/高度 除以2再大一点点

猜你喜欢

转载自blog.csdn.net/leyang0910/article/details/132297036
今日推荐