2D项目经验总结

news2024/12/28 21:39:08

2D项目经验总结

  • 前言
  • 地图的绘制
    • Sprite Editor
    • 叠层注意点(SortingLayer相关知识点)
    • Tile Paltette的使用
      • Animated Tiles(动起来的图片(也称作瓷片或者瓦砖))
  • 玩家移动
    • 玩家方向的翻转
    • 刚体
      • 注意点
    • 碰撞器
    • 输入系统InputSystem(新版Or旧版)
    • 旧版本
    • 新版本:增加了可视化工具。
    • 玩家的移动
    • 玩家的跳跃
      • 实现方式1:实时检测脚底下的碰撞。
      • 实现方式2:通过事件注册
  • 玩家多段攻击实现
    • 动画实现方式
    • 伤害判定方式
  • 2D动画的使用
    • 常用属性
      • Has Exit Time
    • 制作帧动画
    • 动画树(BlendTree)(通常用于跳跃状态或者跑步走路状态的切换)
    • 二级动画菜单(State Machine)
    • 注意点
      • 部分动画需要同时更改碰撞体
  • 碰撞体
    • 常用属性
      • Layer Overrides
    • 多碰撞体的使用(既是碰撞体,也是触发器)(针对于一个物体和其他物体有不同的交互效果)
  • 敌人的各种状态判定
    • 撞墙
    • 是否掉入悬崖
  • 摄像机的相关使用
    • 摄像机跟随
    • 摄像机范围锁定,规定展示区域
    • 用摄像机实现攻击抖动感
  • 音效
    • Audio Mixer
  • 移动端的屏幕操控
  • 游戏暂停功能

前言

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

地图的绘制

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表示暂停。此值也可以控制游戏速度的快慢,看个人需要更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/974791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯打卡Day2

文章目录 糖果分享游戏玛雅人的密码 一、糖果分享游戏IO链接 本题思路:本题是一道模拟题,最终需要每个人得到相同的糖果,那么此时我们开辟一个数组用来保存每个人分一半的结果,然后每个人都需要从左边拿到对方糖果,那么左边就是…

软件测试案例 | “某气候中心数据加工处理系统”软件项目验收测试

近年来,随着软件行业技术和市场环境的变化,越来越多的企业选择将软件项目外包。在外包的软件项目日益增长的情况下,如何对这些外包的项目进行质量控制已成为许多企业的一个关键问题。在软件的众多质量控制手段中,验收测试是其中主…

whatsapp群发:如何应对封号问题

首先,需要明确一个观点,各大平台针对骚扰用户的行为都采取了严厉的打击措施。我们进行WhatsApp客户开发,这本身就属于一种被WhatsApp严厉打击的活动。账号可能会被临时封禁,甚至永久封禁,这是一种可能会发生的风险。因…

视频监控/安防监控EasyCVR平台智能边缘网关硬件ubuntu系统如何取消休眠?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理…

Gridea+GitPage+Gittalk 搭建个人博客

👋通过GrideaGitPage 搭建属于自己的博客! 👻GitPage 负责提供 Web 功能! 😽Gridea 作为本地编辑器,方便 push 文章! 🏷本文讲解如何使用 GrideaGitPage 服务域名(可选&a…

U3D外包开发框架及特点

U3D(Unity3D)是一款流行的跨平台游戏开发引擎,用于创建2D和3D游戏以及交互性应用程序。U3D有许多常用的开发框架和库,这些框架和库可以扩展其功能,使开发人员更轻松地构建游戏和应用程序。以下是一些常用的U3D开发框架…

利用Python来实现动态吃月饼不过分吧!

前言: 中秋节是中国传统的重要节日之一,通常在农历八月十五这一天庆祝。这个节日是为了庆祝丰收和家庭团聚而设立的。中秋节的主要活动包括赏月、吃月饼、赏花灯和进行一些传统的民俗游戏。家人团聚在一起,分享月饼、拜月、赏月,是…

Android逆向学习(三)vscode修改smali绕过vip

Android逆向学习(三)vscode修改smali绕过vip 写在前面 这是吾爱的第二个作业,主要就是要修改smali代码,其实smali代码我感觉没有必要去学,当然主要是我本来就会汇编语言,基本上汇编语言都是一样的&#x…

附录3-爬取58二手房信息,爬取4k图片案例,爬取城市名称,爬取站长素材简历模板(xpath使用案例)

目录 1 爬取58二手房信息 1.1 分析 1.2 代码 2 爬取4k图片案例 2.1 分析 2.2 代码 3 爬取城市名称案例 3.1 分析 3.2 代码 4 爬取站长素材简历模板 4.1 分析 4.2 代码 1 爬取58二手房信息 地址 请输入验证码 ws:121.36.42.44 1.1 分析 我需要标题…

朔雪流量复制器的前端

朔雪流量复制器的前端 1. 功能需求简介 本流量复制器使用端口映射模式实现流量复制,可以实现一对一,一对多,和多对一的流量复制模式。 映射网口的多少取决于设备的硬件,最多可以支持36端口。 使用模式包括** 1)从1…

【日积月累】Java开发习惯养成

目录 Java开发习惯养成 1.前言2.equals()的使用3.整形包装类型的使用BigDecimalBigDecimal大小比较BigDecimal 保留几位小数BigDecimal注意事项 基本数据类型与包装数据类型的使用标准数组与List之间的转换的坑数组转List数组转ArrayLIstList转数组 反转数组 总结参考 文章所…

心法利器[99] | 无监督字面相似度cqr/ctr源码

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

非华为机型如何体验HarmonyOS鸿蒙系统 刷写HarmonyOS鸿蒙GSI系统以及一些初步的bug修复

最近很多视频网站有非华为机型使用HarmonyOS鸿蒙系统的演示。其实大都是刷了HarmonyOS鸿蒙系统gsi系统。体验还可以。有些刷入后bug较多。那么这些机型是如何刷写gsi?可以参考我以往帖子 安卓玩机搞机-----没有第三方包 刷写第三方各种GSI系统 体验非官方系统_gsi刷…

CSS 学习指导

CSS(Cascading Style Sheets)是一种用于定义网页样式的标记语言。以下是一些基本的CSS知识,可以作为入门教程: CSS语法包括选择器、属性和值。选择器用于选择要样式化的元素,属性是要修改的属性(例如&…

二元Logistic回归分析

二元Logistic回归分析 logistic回归多重线性回归分析,该分析方法是研究一个因变量(服从正态分布)与多个自变量的数量关系。 在医学研究中,常常需要研究的结局变量不是连续型变量,而是二分类变量或多分类变量&#…

山西电力市场日前价格预测【2023-09-06】

日前价格预测 预测明日(2023-09-06)山西电力市场全天平均日前电价为263.83元/MWh。其中,最高日前电价为335.16元/MWh,预计出现在06:45。最低日前电价为0.00元/MWh,预计出现在12:15-14:30。 价差方向预测 1:…

冠达管理:创业板跟A股有什么区别?

创业板与A股是我国股市中的两种重要股票商场,它们之间存在许多明显的不同之处。本文将从几个角度剖析创业板和A股的区别。 一、商场属性 创业板是我国证券商场中最年青的板块之一,成立于2009年。它是专门为私募企业、创新式企业提供融资途径的股票商场。…

互联网时代,亿发数字化管理平台如何赋能长沙中小企业管理升级?

随着市场需求的不断变化,中小企业需要具备灵活度,能够迅速调整业务战略和生产计划。企业信息化管理平台作为一种集成化的软件系统,专门设计用于满足中小企业的信息技术需求,以增强其管理效率。帮助中小企业更方便地管理其业务流程…

说一说微信小程序开发的好处

在移动互联网日益普及的今天,微信小程序作为一种创新的商业模式,已经在各行各业中得到了广泛应用。对于企业和开发者来说,微信小程序开发具有诸多优势。本文将详细介绍微信小程序开发的好处,并从实战角度来分析如何进行微信小程序…

skywalking springgateway 全链路

环境 spring-cloud-gateway 3.1.0 springGateway整合skywalking skywalking 默认是不整合springGateway的,需要手动拷贝skywalking optional-plugins下的 apm-spring-cloud-gateway-N.x-plugin-8.13.0.jar 和 apm-spring-webflux-5.x-plugin-8.13.0.jar 架包拷贝到plugins目…