用户:
学习GMS2的星烬有多辣寄查看:23 回复:17 评论:23 创建时间:2021-09-20T12:50:59
在UT审判这里
无论是动画还是游戏,类似于屏幕旋转,缩放这样的屏幕特效相当常见
在合适的时候添加这些屏幕特效
能给玩家很(xiang)惊(sha)艳(ren)的体验
这里就来随便讲一下这些东西
1.屏幕旋转
屏幕旋转其实很简单
理论上说只需要

就可以解决
但是这样不能固定屏幕角度

这样就很完美了
控制角度的原理很简单
就是不断找差值
差值为零就不转,差值不是零就会旋转差值度
很方便
但是我不经常用,因为看起来不高级(什)
当然也有别的方法
随便列举几种常见的
①三角函数
这个我自己也不是很清楚原理
大家只需要明白这玩意儿能用就行

②依靠非围绕旋转的动作积木
我比较喜欢这样
这里展示一下我经常用的一种

原理很简单
屏幕旋转,绝对xy轴也应该旋转
观察可以发现屏幕旋转度=0°时
x轴与屏幕旋转度相等,y轴当然与x轴垂直,也就是屏幕旋转度+90°
因此,先移动到屏幕中心点
再面向x轴的角度,移动x步
随后面向y轴的角度,移动y步
最后转回原本角度。就酱
接下来是屏幕缩放
屏幕缩放会“稍微”比屏幕旋转难搞一些
首先讲一下屏幕缩放怎么办
首先,屏幕缩放不是只动角色大小能搞定的
还需要动角色的xy
动用大家的脑子,随便想想就知道
屏幕缩放时,角色的xy肯定是原有xy × 屏幕缩放倍,角色的大小则是角色大小 × 屏幕缩放倍
但是问题来了
如果重复执行 {移到x ×屏幕缩放倍,y × 屏幕缩放倍; 设置大小为 角色大小 × 屏幕缩放倍}
就像这样

乍看没问题
但是仔细一琢磨,问题很大!
xy和大小不断乘一个小于1的数,肯定会无限趋近于0啊,如果屏幕缩放倍大于1,又会无限趋近于无限大
所以这样做是绝对不行的
那我们就要想办法
(当时我想了好长时间)
目前看来,只有一个办法:将角色的所有信息都用 变量 代替!
是的,角度,x,y,宽度,高度等等这些信息
都需要用变量代替,不然就会出现上述情况
自然麻烦不少,对吧
因为这个原因,在有屏幕旋转,缩放的的审判里,变量等数据的传输和使用挺重要的
稍不留神就会整个崩掉
至于屏幕缩放的代码,我更喜欢和屏幕旋转合在一起
这里只晒两种
①还是三角函数

为什么这么Looooonnnnnggggg?
因为为了避免不必要的多余移动,我把设置xy变成了移到xy
同时加上了”×屏幕缩放倍“
因此显得超级长
②动作积木

这个是我常用的,也用了围绕旋转
因为有多余移动,因此对于画笔不太友好
所以我的画笔用的一般是三角函数版
这个就等于是先让角色归位,如果屏幕旋转度=0°的情况
在围绕旋转就可以了(这也是一种固定屏幕旋转角度的方法)
3.屏幕移动
不知道大家有没有注意到
我在所有的屏幕特效函数里都加了”屏幕中心点“这个角色?
好了,屏幕移动讲完了
只需要让屏幕中心点移动就行
(围绕旋转就是围绕中心点旋转就OK)
4.屏幕镜像
事实证明,最后的不一定最难
来理解一下屏幕镜像的概念
简单来说,就是角喵像要左右翻转,x则取相反数,y不变

(就是这个积木,能让角喵像镜像)
但是心细的同学就会想到:欸,角度怎么办?
简单,只需要 180°-角色角度 就可以!(为什么?自己画个图,想想就行)
相信大家都能明白怎么办了
分情况就行
像这样
位置:

图像:

Okay,非常完美
这就是四种屏幕特效的基本教程
结束!
撒花!*★,°*:.☆/( ̄▽ ̄)/$:*.°★* 。
传闻中的三叶imgsrc="https://static.cod喵/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E7%82%B9%E8%B5%9E.gif"alt="emotion_编程猫_点赞"
点赞1
评论