赞
踩
2d与3d素材不同的是,为了提高效率,2d素材常常以图片形式存在,称为精灵sprite,图片可以组合成一张大图,在需要时进行分割使用。图片素材需要先对其sprite模式,像素比例等部分进行设置,来达到最好的效果。
可以在sprite editor-slice中调整切割方式,通过设置切割数量和锚点来改进切割效果。完成后点击apply应用切割结果。
首先需要对场景素材进行切割,按照cell尺寸切成对应大小的素材便于绘制。使用Tile Palette进行绘制,创建瓦片地图TileMap对象并在其上使用分割好的素材进行绘制。(当位置出现问题时注意调整锚点)2d游戏调整画面比例和大小一般采取调整摄像机的方式。
2d场景存在图片间覆盖的问题,所以需要调整图层layer,2d组件sprite renderer负责渲染图片,其中可以调整sorting layer来改变图片的显示顺序,一般为大数遮挡小数。
使用相关工具可以实现有规则的瓦片绘制和动态瓦片的绘制。Rule Tile通过为各个瓦片设置出现的规则来实现批量绘制,每个规则可以设置瓦片的出现位置与随机情况等,各个规则之间还有优先级(比如链接部和填充部都是四项有图片,而链接部斜向应该没有图片,此时优先级应高于填充部),取决于规则的顺序,设置好后加入到调色盘即可使用。
动态瓦片则以数张相似的瓦片为基础,以固定的频率切换瓦片图案来达到动态的效果,当最大与最小速度不一致时会随机取值。
刚体组件模拟物理效果,碰撞体组件实现碰撞与相关检测。瓦片地图也可以添加Tile Collider 2d,并通过添加composite collider 2d来合并各个瓦片的碰撞体。 刚体还可以冻结坐标和旋转来防止不必要的移动。
在Input Manager之外有一个新的输入系统,对于跨平台的输入编辑更方便,将设置修改为下图所示:
在包管理器中安装,创建Input Actions,在其中可以编辑多套不同的输入系统来应对不同功能,使用控制表可以对不同输入设备进行分类。不同的输入设备也有不同的效果,比如手柄就可以通过控制摇动角度来做到不同的输入大小。
可以采用另一种方式来使用InputSystem。为Player对象添加Player Input组件可以自动生成Input Actions,通过其行为资产创建C#类,并在PlayerController中进行调用。
通过刚体控制人物的移动,移动的更新一般在FixUpdate中去写,FixUpdate会以固定频率去执行,不受硬件条件影响。组件的获取有两种方式,一是在unity中拖拽,适合在游戏开始很早时就需要获得;二是在awake或其他位置获得组件GetComponent。将速率、方向与时间相乘作为新的刚体速度。
2d人物变向需要实现翻转,在sprite renderer组件中提供了翻转选项flip,这种方式需要人物的锚点位置合适
下面初步实现人物跳跃。
在之前创建的InputActionAssert中创建一个新的Action作为跳跃的输入,并绑定对应按键。在脚本中当按下对应按键时,对角色施加一个突发的力来实现跳跃。InputSystem为按键提供了开始、持续和结束三个事件来更好地操控方法。将跳跃方法注册到InputSystem的事件中,来在按下按键时开始跳跃。
(注:如果在使用unity2022时点击play报错“ArgumentNullException: Value cannot be null. Parameter name: _unity_self”,只要让hierarchy不要选中有脚本的对象即可。)
简单的事件驱动会让人物可以无限跳跃,所以需要检测周围环境来进行判断。调用Physics2D的方法来检测某一点一定范围内的对应layer的碰撞体,并作出相应的反应。在Update中不断检测。
一直按着移动,会使人物被压在墙上无法下滑,可以通过修改材质的方式解决。创建新的2D物理材质并把摩擦力设为零,将其应用在刚体组件上即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。