1. 场景搭建之瓦片地图
- create -> 2D object -> TileMap
- 这时场景视图中会出现一个Grid/TileMap GameObject 点击TileMap 看到一堆网格,这就是我们需要作画的位置了
- Window ->2D -> Tile palette 调出Tile palette 面板,create new palette 然后将美工给的图拖入到这个面板中,就是我们刷场景用的素材了,将其中素材选中,用刷子在场景中刷出你喜欢的场景吧
2. Layer 图层关系
- 当你将background这个GameObject打开的时候,会发现background 出现在刚才制作的场景前面。这个时候就需要调整sorting layer 的层级关系。越是下面的层显示在场景中就越靠前。
- add layer 增加 background 和 frontground 两个层级
3. 让人物动起来
- Project Settings -> input -> 查看左右,或者上下移动的代号分别是什么
Input.GetAxis("horizontal") 返回值 -1~0~1 之间的数
rb.velocity = new Vector2(horizontalFloat * speed * Time.deltaTime, rb.velocity.y); 刚体的移动
- Update() 和 FixedUpdate() 区别
Update() :按照帧率进行刷新 比如fps=60 说明1秒钟刷新了60次
FixedUpdate: 按照固定时间去刷新这个函数 默认FixedTime = 0.02s
4. 给人物添加动画
- 给人物 add 组件 Animator
- 新建人物的动画文件夹 Animation ,在文件夹中添加Animator 拖拽赋值给第一步中添加的组件Animator
- Window -> Animation 调出Animation 窗口 ,最重要一点,需要把鼠标点击你的player GameObject创建新的Animator,如果单纯的在文件夹中create Animation 是添加不了任何图片的. 最后将美工给的帧图片拖拽到Animation 窗口 调整动画速度.
- Window -> Animation 调出Animator 窗口
- 各种状态的切换是根据Parameters 的值来的。设置Parameters 的值是float 当 running 的速度大于0.1时,切换到跑步的状态
- 状态的切换
animator.SetBool("***",defeault value);
- 碰撞检测+layerMask 人物的碰撞检测 将地面的Layer 设置为ground 然后利用coll.isTouchingLayers(Layer) 判断是否与地面碰撞
5. 跑动时bug 解决
原因是因为加的碰撞器是矩形边框的collider ,然后地面也是矩形边框的collider.所以模拟现实中的地面和人类行走关系,会有时候小石头或者什么阻碍物挡住真人。又因为Freeze Z轴被勾选,所以就会造成跑不动的假象。解决方法是将人物上半身用box collider 下半身就有一个circle Collider 。
6.人物跟随相机
- 使用插件cineMachine,packageManager 中搜索cinemachine 并导入
- 设置Follow 为player
- 为cinemachine相机添加扩展 collider 为了不让人物跳跃时超出一定的范围
7.物品收集
- 添加樱桃动画(和第4步一样,添加动画)
- 设置物品的tag 为 Collection 根据碰撞体的Collider.tag 来判断是否碰撞到了要被收集的物体上,如果碰撞到了就Destory掉这个GameObject
8. bug 解决
- 人物跳跃撞墙后不会掉落问题
- 问题产生原因: 人物跳跃时候collider向右会有一个加速度,然后会产生摩擦力。
- 问题解决方法:为人物新建一个材质,将材质的摩擦力设置为0
- 人物多段跳跃的问题
- 解决方案1:人物只要在空中,y轴方向就有一个速度,所以当y轴速度为0 的时候 才能跳跃
- 解决方案2:跟之前变化下落状态一样,当人物接触到地面的时候,变化为静止状态,这里也可以用这个条件
9. UI 显示 收集数据
使用UGUI 创建Text 数字在左上角,编写脚本改变数字的数值
这部分没什么好记录的,比较简单
10. 游戏敌人的添加,添加敌人AI
添加青蛙敌人AI,在青蛙左右两边分别加上一个gameobject 作为左右边界点。让青蛙只能在这两个object 中间来回移动。