sunny land(2d)

sunny land(2d)

一款横版冒险类游戏 类似超级马里奥

游戏截图

image image image image

编辑素材&tilemap

点击背景图片
        每单位像素数:16后点击应用
        把其余图片也设为16
    把背景图片拖入layer中
    在layer中右键新建tilemap 瓦片地图
        点击window 选择2d tilepalette 平铺调色板
            把我们的素材拖进去就可以使用我们的素材进行绘画了
            点击创建 命名为map
    图片集素材
        sprite model 选择multiple
        点击 sprite editor
            点击slice 切割后 自动切割 应用 (不用这个)
            点击slice 不选自动 选 grid by cell size 大小设为16*16
                点击apply应用
    tilemap的图层设为Ground

图层layer&角色建立

调整视图
        尺寸选16:9
        main camer的size设为6
    选择背景图片
        在排序图层中添加 Background 和 Frontground两个图层
    把sprite图片拖入layer 创建player 把动画和动画控制器保存好
        添加box clooider2D 点击编辑碰撞器 调整好碰撞范围
        添加rigidbody2d组件
    为地图添加碰撞体
        选中tilemap
            添加 tilemap collider 2d组件

控制player移动

新建脚本PlayerController
        代码
    rigidbody中 锁定z轴
    备注
        GetAxis 获得的是 -1~0 ~1的值
        GetAxisRaw是直接获得-1 0 1的值

角色方向 跳跃

动画效果

创建过渡连线
    animator菜单中的Paramters 添加选择float
        命名为playerRun
        移动中物体用float方便 
    idle到run
        添加条件 参数选playerRun  greater数值为0.1
        取消 有退出时间的勾
        过渡持续时间为 0
    run到idle
        添加条件 参数选playerRun  rless数值为0.1
        取消 有退出时间的勾
        过渡持续时间为 0
    打开playerController脚本
        添加代码

跳跃动画

动画器中建立boole参数的 playerJump playerFall playerIdle参数
    baselayer中把运动条件连好线
    idle到jump
        取消 有退出时间
        过渡持续时间为 0
        添加条件 playerJump设为true
    jump到fall
        取消 有退出时间
        过渡持续时间为 0
        添加条件 playerJump设为false
        添加条件 playerFall设为true
    设置好ground
    修改代码
    修复绊脚bug
        为player添加 circle collider 2D组件

镜头控制

在camera上添加脚本控制
        代码
    windows->package manager->选择all package
        找到cinemachine 点击安装
    把背景图片都放到BackGround中统一管理
    在BackGround中添加polygon collider 2D组件
        点击编辑碰撞器
            把背景图都圈上
            由于默认是五边形 点击ctrl 再点击多余的点就可以删去不要的点
        勾选上 is trigger
    创建2dcamera
        把player放到Follow中
        可以修改body中的dead zone 调整镜头跟随
        在Extension中添加额外组件CinemachineConfiner
            bounding shape 2d选择BackGround
        这样就能保证不会让摄像头拍到背景外的画面了

收集物品

把食物做成prefab
        添加box collider 2D组件
            勾选 is trigger
            选择tag为 cherry
        代码
    添加排序图层
        Background
        Player
        Frontground
        Environment
        Ground

物理材质&空中跳跃

创建一个2D物理材质
        friction摩擦力设为0
    给player的boxcollider添加这个物理材质
        这样能保证player在墙壁上可以顺利滑下去而不是紧贴着
    修改跳跃逻辑 让player仅能跳跃一次

添加UI

注意文本的锁定位置为左上角

添加Enemy

创建动画
    添加2d刚体 和collider2d
    添加Enemy tag

给player添加受伤效果

敌人移动

给frog创建2个空物体 命名为 left right 并标色为红色
    代码
    frogidle 的动画里 add event 
        选中后再检查器中 调用函数Movemennt()

把enemy抽象出来

重写父类时 start方法中不要忘了 base.Start();

添加音乐

给player 添加 audio source
        player on awake
        loop
    点击覆盖 覆盖到全部 就可以把修改后的内容添加到预制体中
    clip选择
        背景 BGM02
        跳跃 jump26
        受伤 foxhurt
        拾取道具coin20
        子主题 5

对话框dialog

在canvas中新建panel
        颜色调为半透明的黑色
        调整好大小位置 固定锚点
        命名为EnterDialog
        在里面添加 UI->Text
    在出口房子上添加box2d碰撞器
        调整碰撞器大小到门的位置
    添加脚本 EnterDialog
        代码
    创建动画 通过改关键帧的不透明度达到渐变效果

创建关卡2 level2

下蹲设计

代码

场景控制

在EnterDialog下添加脚本
        代码
    在生成设置中把 level1 level2添加进去 好让它生成index

2D光效

tilemap renderer中找到Default-Diffuse材质
        画面会变暗
    创建  材质
        shader中选择sprites/Diffuse
        把这个材质拖到player 以及门,背景图 中
    为蜡烛 player添加点光源
        player的点光源需要放在player内
        点光源也是3d的 需要调整好位置

视觉差

在background上新建脚本
        代码
        把maincamera 拖入 Cam
        MoveRate设为0.4
    把背景树门统一放在一个游戏物体内管理
        把prallax拖到这个游戏物体上
        MoveRate设为0.2

主菜单

新建场景Menu
    新建UI panel
        将source image选择一张图片
        命名为BG
        复制一份BG 调整颜色 命名为MineMenu
            添加Button-TextMashPro
        新建TextMashPro 用来写游戏标题
    在MainMenu游戏物体下添加Menu脚本
        代码
        在button下的 鼠标单击下把 MainMenu拖过来
            此时的下拉菜单中就能找到写的开始游戏方法
    在生成设置里把Menu这个场景放在第一个 也就是index为0
    为场景添加过渡动画(录制)
        把所有ui元素放到一个文件夹内
        在动画结束调用UIEnable()方法
    添加暂停功能
        滑动条

调节音量功能

添加AudioMixer
    调出音频混合器 window->音频->音频混合器
    在AudioSource的输出力选择刚才的Mater
    在slider中设置 Minvalue为-80 Max Value为0
    在音频混合器中双击选中Mater 右键音量 选择暴露到可编辑脚本
        重命名为MainVolume

移动端适配

资源商店下载 joystick pack
    手机上下载unity remote5 用于unity连接
    把Variable joystick放入Canvas下 调整好大小 锚点
    代码
    unity remote

单向平台

新建tilemap
    添加 Platform Effector 2D 组件
    勾选 Used By Effector
    去掉 Use Collider Mask
    勾选 Use One Way
    layer 设为 Ground

soundManager

新建游戏物体统一管理音频
    代码

打包