2D项目经验总结

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.rhkb.cn/news/120996.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写Mybatis:第19章-二级缓存

文章目录 一、目标:二级缓存二、设计:二级缓存三、实现:二级缓存3.1 工程结构3.2 二级缓存类图3.3 二级缓存队列3.3.1 FIFI缓存策略3.3.2 事务缓存3.3.3 事务管理3.3.4 修改一级缓存 3.4 缓存执行器3.4.1 执行器接口3.4.2 执行器抽象基类3.4.…

华为OD机试 - 等和子数组最小和 - 深度优先搜索(Java 2022 Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》…

企业电子招标采购系统源码java 版本 Spring Cloud + Spring Boot

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

ARM编程模型-指令流水线

流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。 1. 3级流水线 到ARM7为止的ARM处理器使用简单的3级流水线,它包括下列流水线级。 (1&#xff0…

机器人中的数值优化(五)——信赖域方法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

ubuntu22.04搭建verilator仿真环境

概述 操作系统为 Ubuntu(22.04.2 LTS),本次安装verilator开源verilog仿真工具,进行RTL功能仿真。下面构建版本为5.008的verilator仿真环境。先看一下我系统的版本: 安装流程 安装依赖 sudo apt-get install git perl python3 make autoc…

肖sir__设计测试用例方法之边界值03_(黑盒测试)

设计测试用例方法之边界值 边界点定义 上点:边界上的点 离点:离上点最近的点(即上点左右两边最邻近的点) 内点:在域范围内的点 案例:qq号:5-12位 闭区间: 离点:5 位 &…

计算机组成原理学习记录(更新中)

文章目录 仅做个人记录计组的学习中认为容易记错的点或是个人认为的要点,如有错误,请多包涵。 学习资源为b站网课:王道计算机考研 计算机组成原理 大部分图片来自该网课 (1)冯诺依曼型计算机由五个部分组成&#xff…

ajax day2

1、 2、控制弹框显示和隐藏: 3、右键tr,编辑为html,可直接复制tr部分的代码 4、删除时,点击删除按钮,可以获取图书id: 5、编辑图书 快速赋值表单元素内容,用于回显: 6、hidden …

Spring AOP与静态代理/动态代理

文章目录 一、代理模式静态代理动态代理代理模式与AOP 二、Spring AOPSping AOP用来处理什么场景jdk 动态代理cglib 动态代理面试题:讲讲Spring AOP的原理与执行流程 总结 一、代理模式 代理模式是一种结构型设计模式,它允许对象提供替代品或占位符&…

Android片段

如果你希望应用根据不同的环境有不同的外观和行为,这种情况下就需要片段,片段是可以由不同活动重用的模块化代码组件。 片段(Fragment)是活动(Activity)的一种模块化部分,表示活动中的行为或界面…

Gin学习记录2——路由

路由 一. 常规路由二. 动态路由三. 带参数的路由3.1 GET3.2 POST3.3 绑定 四. 简单的路由组五. 文件分组 一. 常规路由 package mainimport ("net/http""github.com/gin-gonic/gin" )func index(ctx *gin.Context) {ctx.String(http.StatusOK, "Hell…

八个针对高级职位的高级 JavaScript 面试题

JavaScript 是一种功能强大的语言,是网络的主要构建块之一。这种强大的语言也有一些怪癖。例如,您是否知道 0 -0 的计算结果为 true,或者 Number("") 的结果为 0? 问题是,有时这些怪癖会让你摸不着头脑&…

Python 操作 Excel

之前看过一篇文章,说一个工作多年的老员工,处理数据时只会用复制粘贴到 Excel ,天天加班工作还完不成,后来公司就招了一个会 Python 的新人,结果分分钟就处理完成。所以工作中大家经常会使用 Excel 去处理以及展示数据…

AI工人操作行为流程规范识别算法

AI工人操作行为流程规范识别算法通过yolov7python网络模型框架,AI工人操作行为流程规范识别算法对作业人员的操作行为进行实时分析,根据设定算法规则判断操作行为是否符合作业标准规定的SOP流程。Yolo意思是You Only Look Once,它并没有真正的…

【Cortex-M3权威指南】学习笔记4 - 异常

目录 实现 CM3流水线CM3 详细框图CM3 总线接口总线连接模板 异常异常类型优先级定义优先级组 向量表中断输入于挂起NMI中断挂起 Fault 类异常总线 faults存储器管理 faults用法 faults SVC 与 PendSV 实现 CM3 流水线 CM3 处理器使用 3 级流水线,分别是:…

【从0学习Solidity】2. 值类型详解

Solidity极简入门: 2. 值类型 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发…

etcd分布式存储

etcd分布式存储 etcd简介etcd下载安装etcd常用命令etcd配置参数etcd集群golang操作etcd

Android大厂需要刷的(999道)面试题

想必大家都在为今年的金九银十做准备,今年也是最为艰难的一年。作为程序员从未感觉到如此艰难,身边不是被辞退就是找不到工作。先不说2023年应届生毕业即失业,作为开发15年的老Android程序员,现在也在和300个人挣一个岗位。 肉少…

嵌入式学习笔记(12)汇编写启动代码之设置栈和调用C语言

C语言运行时需求和栈的意义 “C语言运行时(runtime)”需要一定的条件,这些条件由汇编来提供。C语言运行时主要是需要栈。 C语言和栈的关系:C语言中的局部变量都是用栈来实现的。如果我们汇编部分没有给C部分预先设置合理合法的栈…