前言
缘起
c语言的exe出题出腻了 想了解一下unity相关的知识
出题思路
根据超级玛丽这个游戏,想到一种闯关的游戏,作为新生可能这个难度挺难的,全新的语言,全新的东西,
得到flag给新生两种方式
1 破解游戏,如果人物可以穿过空气墙,就可以看到绘制在地图上的flag
2 如果破解游戏困难的话,留给他们一个在c#里的加密算法,应该会加上混淆,因为算法这个实在是没啥考的,就看他们能不能解密出来了,如果直接破解去穿墙,那就十分方便了。
正篇
环境装配
在电脑上安装unity的环境,现在的版本在下载时都需要通过下载Unity Hub这个集成社区软件来安装不同版本的unity,然后创建项目,我们只要去官网注册好账号,按照步骤依次下载就完成
素材收集
起初的思路是制作马里奥的素材,因为网络上也是这类教程较多,但是因为素材难找的原因,在这里找到了一篇总结了免费素材的文章
https://cn.eagle.cool/blog/post/free-game-assets
本次使用了kenney网站的2d素材,画风本人还是非常喜欢的
unity项目学习
根据b站的视频学习的,根据步骤大致分为下面的目录
放置素材-设计标签-编写脚本-导出
较为复杂的可能就是编写脚本这一步了,具体的方法没有源码就跟着视频里的逻辑去写就好了
素材放置
先来了解一下我们进入页面后的一些窗口
左上角是画面中的元素单位,后期我们单独设计某个元素时要在这里选择对应对象,
再向左是场景窗口,这里我们在这个界面设计关卡 角色.
右边的游戏画面,就是最终游戏会展示出来的效果
下面这个一栏就是我们的素材文件,我们的动画,贴图 音效都在这里
第一步设计摄像机尺寸,在游戏窗口的display旁边 选择固定的尺寸,摄像机的视角大小就不会变了
第二步放置方块素材
拖拽放置,选择检查器-绘制模式平铺 我们就可以大量绘图了
实现这样的画面
放置人物和上面步骤类似,放好之后在对象栏中修改相应名称为Player
设计标签
这一部分主要是在unity中 为地形,角色和敌人设计相应的碰撞体积,动作,需要我们进行细致的标签,为下一步的脚本做准备
选择地面对象,选择添加组件 Box Collider 2D 这样地面就可以站立了,其他墙体也一样
选择人物 添加组件Box Collider 2D 和Rigidbody 2D 把后者的冻结旋转勾选上,就不会人物模型侧翻,(具体的体积手动修改就行)
生成动画在根目录创建相应的文件夹,然后新建动画器控制器文件 就会看到如下的状态,我们去寻找相应的人物动作图片,放置到右下角的时间轴中,比如run的动画,我们拖动两个图片,就可以实现效果
效果如下。
接着我们来设计动作的逻辑,在参数一栏新建对应动作的参数,如何理解这一性质,就比如奔跑跳跃的特性,他们在一定条件下,会由不触发变成触发,这就是典型的bool类型。而像死亡这种特性,一旦“触发”那就无法再改变他的值,Trigger类型就属于这种,一旦触发,就无法再改变的状态
在最初创建动作时,动作之间的线是没有的,我们右键entry的话会有创建过度的选项 就是连线,idel是我们的站立动作,最初始化的动作我们让他只要一进入游戏就执行。
run和jump的状态 他们和站立这三者之间是可以在一定的条件下相互实现动作转换的。构建了如题的三角关系。
完成上面这一步之后,就需要设计上面提到的条件了,如下图,在对应的conditions位置 我们选择了run - true,这里的意思就是,从 站立到run的条件是,当参数run值为true1时,就可以执行,具体实现脚本,要我们在代码中呈现。
结语
场景的基础布置工作我们就在这里完成了,下一篇我们实现c#代码,让人物动起来,做一些关卡逻辑,初步实现一下简单的unity游戏,最后一篇章我们介绍一下加密的思路,前两篇更注重于开发,和逆向的关系不大,但是希望可以从新的角度,去看待一类题目。
About this Post
This post is written by xianyuuuan, licensed under CC BY-NC 4.0.