2D项目经验总结

前言

这篇文章不会记录的特别详细,只是大概记录一下当时的使用心得。

地图的绘制

Sprite Editor

用来剪切图片,将图集中需要用到的图片剪切出来。

叠层注意点(SortingLayer相关知识点)

Sorting Layer越靠下,表示渲染的顺序越靠后。
在这里插入图片描述
同一Layer层,Order in Layer越大,表示渲染顺序越靠后。
在这里插入图片描述

Tile Paltette的使用

首先在WIndows面板下打开Tile Paltette。
然后Create New Palette
在这里插入图片描述
然后将剪切好的图集拖拽进来即可。
在这里插入图片描述
然后点击笔刷,选择图片,就可以在Scene面板中画图了。
在这里插入图片描述

Animated Tiles(动起来的图片(也称作瓷片或者瓦砖))

Project面板中创建 Animated Tiles,然后选择要动起来的图片数量,如图中瀑布是四格,因此添加四格,然后将对应顺序的瀑布图片填入,一共会创建三个Animated Tiles,然后将他们拖入到Tile Palette面板中,选中他们绘制出来的图片即是动起来的瀑布。
在这里插入图片描述

玩家移动

实现玩家移动需要三个组件,刚体,碰撞体,unity输入系统
刚体主要实现玩家的物理特性,例如移动和跳跃。
碰撞体主要负责和地形交互,在哪里移动。
输入系统负责接收玩家的指令。

玩家方向的翻转

一种是更改对应方向的Scale值,一种是更改Sprite Renderer的Filp,两种方式都可以,看个人爱好。
在这里插入图片描述
在这里插入图片描述

刚体

主要实现物体的物理特性,此处有个注意点,就是要锁定Z轴的转动。因为玩家操作的角色实际上是一张图片,遇到角落磕磕碰碰很可能就会绕着Z轴转动,因此需要锁定Z轴。
在这里插入图片描述

注意点

玩家上下方向的力一般情况下都使用刚体自带的那个值,因为玩家默认受到重力影响,改成0下落的速度会非常的慢。
在这里插入图片描述

碰撞器

玩家与地形之间的碰撞使用碰撞器来触发。可以自己调整碰撞器的形状和大小,人物一般使用椭圆。
在这里插入图片描述

输入系统InputSystem(新版Or旧版)

旧版本

旧版本就是获取InputSystem中输入的值,然后根据获取到的值做对应的操作。
在这里插入图片描述
在这里插入图片描述

新版本:增加了可视化工具。

例如我想给玩家角色添加跳跃事件。
在这里插入图片描述
在这里插入图片描述
又或者我想监听玩家上下左右按键移动。
在这里插入图片描述
在这里插入图片描述
拿到对应的数据,然后交给刚体去做对应的移动或者跳跃操作即可。

玩家的移动

更改刚体的速度即可。
在这里插入图片描述

玩家的跳跃

玩家跳跃有个注意点,不做限制的话玩家可以一直跳,直至跳出屏幕外(疯狂的小鸟)。因此我们需要给玩家跳跃加点限制。

实现方式1:实时检测脚底下的碰撞。

实时检测脚底下的碰撞,接触到地面则设置为可跳跃状态,否则禁止跳跃。
在这里插入图片描述在这里插入图片描述

实现方式2:通过事件注册

事件有开始,那就有结束,因此我们可以设置一个可跳跃次数,当检测到跳跃开始的时候-1,这种方式还可以实现吃道具进阶连跳(例如I wanner游戏)。每次跳跃的时候判断当前是否还有跳跃次数,没有则禁止跳跃。
在这里插入图片描述

玩家多段攻击实现

动画实现方式

实现方式很简单,如图下所示:
在这里插入图片描述

此处要用到Has Exit Time这个参数
首先判断进入下一个攻击的条件都一样,是玩家是攻击状态,并且触发了Attack。
此处Exit Time,在0.9部分之前按攻击,会设置玩家为攻击状态并触发Attack,否则进入Exit,退出当前攻击。退出的时候会将玩家状态重置。

伤害判定方式

通过碰撞器触发。
此处需要用到多边形碰撞体,一帧一帧查看角色的攻击动画,然后在角色攻击的那一帧,绘制出和武器一样的碰撞体,并且将这个碰撞体设置为True,其余帧为false。然后给武器添加上脚本,获取到碰撞的敌人,对他造成伤害和攻击效果。

2D动画的使用

常用属性

Has Exit Time

这个属性经常使用,意思是当前动作切换到下一个动作是否需要当前动作播放完毕,取消勾选即可直接进入到下一个动作。
当前在树中或者二级菜单最后一个动画的时候,如果没有condition,一定要勾选上这个属性,否则最后一个动画会直接被unity判定跳过。
在这里插入图片描述

制作帧动画

将对应的图片插入到Animation面板中,同一帧可以改变多项,例如图片,还有图片的阿尔法值,如图下所示展示的是主角受到攻击的动画,同时自身还要闪光。
在这里插入图片描述

动画树(BlendTree)(通常用于跳跃状态或者跑步走路状态的切换)

即一系列的动画都由一个值控制的时候可以使用动画树。
此处拿玩家跳跃距离,跳跃动作分为:起跳、向上加速、空中悬停,向下加速落地等。他们都可以由玩家垂直方向的速度控制。
在这里插入图片描述

二级动画菜单(State Machine)

就是在当前动画面板中新添加一个动画面板,相当于当前类里再加一个类。里面有单独的判断条件,和动画树不一样的是,里面的值也可以条件也可以单独判断
在这里插入图片描述

在这里插入图片描述

注意点

部分动画需要同时更改碰撞体

例如下蹲动画,玩家此时下蹲,碰撞面积实际是变小了的,所以要更改碰撞体的面积和偏移量(碰撞体不支持锚点,因此都是整个放大缩小)

碰撞体

常用属性

Layer Overrides

可以选择与哪些layer层级交互,哪些不交互。还可以控制交互的优先级,数字越大,优先级越高(用于一个物体上有多个碰撞体的情况)。

多碰撞体的使用(既是碰撞体,也是触发器)(针对于一个物体和其他物体有不同的交互效果)

举个例子,一个敌人,他要和地形产生碰撞,但是他又是玩家角色的触发器(碰撞的时候造成击退和伤害)。此时就有一个很尴尬的点,勾选上isTriger,不会与地形产生交互,直接会掉下去,不勾选又无法和玩家产生触发伤害击退的交互,因此只需要使用俩个碰撞体即可,一个作为碰撞器,一个作为触发器。
在这里插入图片描述

敌人的各种状态判定

撞墙

在敌人前方增加一个碰撞器,试试检测是否与墙体发生碰撞,碰撞则掉头

是否掉入悬崖

在敌人前方脚下增加一个碰撞器,检测前下方是否有路,没路则返回。

摄像机的相关使用

摄像机跟随

使用cinemaachine组件,选择2D相机

摄像机范围锁定,规定展示区域

添加Add Extension,选择Confinder2D,然后选中地图中的一个碰撞体给他设置范围,注意这个碰撞体要作为触发器,不然可能会拦主角的路
在这里插入图片描述

用摄像机实现攻击抖动感

添加Inpulse lister,游戏中也添加一个相关脚本,设置相关参数即可。
在这里插入图片描述

在这里插入图片描述

音效

Audio Mixer

将音效分级,这样可以实现一个统一控制所有音量,单独的音效可以分别控制自己。
在这里插入图片描述

移动端的屏幕操控

添加一张图片,然后添加On-Screen Stick即可实现,此处属于和unity新的输入系统搭配使用。
在这里插入图片描述
如果有报错,改一下这个参数即可。
在这里插入图片描述

游戏暂停功能

通过Time.timeScale控制,1表示正常,0表示暂停。此值也可以控制游戏速度的快慢,看个人需要更改。

猜你喜欢

转载自blog.csdn.net/qq_40629631/article/details/132478375