- 博客(39)
- 收藏
- 关注
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(十3、FPS多人化——击伤同步)
上一篇已经实现了射击同步,这一篇实现射击时伤害也可以进行同步新建脚本,使用接口方式实现新建脚本,继承IDamager:受到伤害后,健康值会减少注意:这里需要使用RPC(从客户端A发送一条数据给服务器,也就是rpc调用这个方法,发送给服务器之后,服务器会给所有的客户端均显现这个方法)通过bool的IsDeath判断如果生命值小于0时,则死亡,同时三秒钟后复活Remote Procedure Calls (RPC)使可以调用"networked GameObjects"上的方法,对由用户输入等触发的不常用
2022-06-10 23:45:00 397
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(十2、FPS多人化——射击同步)
按照单机时的第一人称简单配置EventCode指的是发送的事件是什么类型,例如开枪击中地面,则定义EventCode为HitGround,此时会把HitGround这个tag发送给服务器,服务器知道这个消息后,直接转发给服务端,服务端有个方法可以解析HitGround这个事件逻辑并执行,实现同步效果新建脚本HitManager用方法写监听方法,依次将EventCode的HitObject中用Dictionary存放的数据转换出来方法进行PhotonServer的Event的接收当不射击时等
2022-06-09 23:01:29 545
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(十1、FPS多人化——IK)
需要制作枪口的同步,即枪口朝向的同步和枪械的绑定,这里使用IKIK,IK与FK对应,正向运动学就是根骨骼带动节点骨骼运动,IK就是反向运动学,也就是根据子节点的位置,推算出父节点的关节的变化。window-Package Manager,打开Advanced,勾选show dependencies、show preview package,输入Animation Rigging,install打开玩家角色预制体,添加weaponHolder,并加入之前制作的枪设置旋转点,令枪围绕枪托在脚上旋转添加Pho
2022-06-09 21:04:15 727
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(九——pun)
Photon Unity Networking(首字母缩写PUN)是一个Unity多人游戏插件包。它提供了身份验证选项、匹配,以及快速、可靠的通过我们的Photon后端实现的游戏内通信。 PUN作用:搭建多人 在线 / 局域网 网络游戏 Photon逻辑顺序:连接到服务器——加入某房间——主客户端加载场景。类似LOL自定义模式注:PUN会根据统一的版本号、Appid,加入主客户端的房间,使所有客户端加载同一个场景作用:PUN会根据Appid和版本号,确认你们属于同一个应用。填入邮箱,点Set
2022-06-09 19:31:24 1092
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八6、FPS——武器系统4)
没有继承MonoBehaviour的话是没有办法直接赋值到组件当中去的,所以创建一个脚本继承MonoBehavior,设置输入里的最大最小范围,并引入注意:这里需要回到构造函数初始化:回到脚本,新增施加力的方法然后到FPMouseLook脚本,在start函数中声明,找到,在其中引用。并设置好frequence和damp的值,使晃动明显开始游戏,进行射击,就会发现实现了一定的屏幕晃动效果。frequence频率越大,抖动就越快,damp数值越大,回到中心的速度就越快。制作一个白色的矩形图片
2022-06-09 18:48:05 460
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八5、FPS——武器系统3)
AnimationCurve是Unity3D里一个非常实用的功能。作用是编辑一条任意变化的曲线用在任何你想用在的地方。 如曲线地形,曲线轨迹等。也被用在了模型动画播放时的碰撞盒缩放及重力调节。AnimationCurve 曲线的绘制方法和Ragespline中的物体轮廓勾勒的方法类似。通过方法来计算后坐力的偏移绘制曲线双击任意区域内地方,创建关键点。对关键点点鼠标右键,则出如下界面.方法来控制后坐力的范围,令刚开始的后坐力为0,当开枪的时候才会有后坐力并逐渐累加此时发现后坐力很大,
2022-06-09 18:22:53 578
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八4、FPS——武器系统2)
建立射击时的动画(拖入开枪、收枪、拿枪姿势等动画),并设置好连线过渡,将每一个动画的settings均设置为90%新增瞄准方法改变相机的方法尺寸(当瞄准时,需要将相机往前拉大,改变镜头大小),用OriginFov来缓存原来的Fov大小设置长按鼠标右键时瞄准,松开时退出瞄准设置瞄准时开枪射击的动画:新增瞄准射击时的相机缩放,这里需要协程首先需要一个公开的全局的协程变量来引用协程方法,并进行初始化此时可以实现瞄准时镜头呈现26的放大和之前的博客一样,给子弹设置rigidbody并获取,同时需要
2022-06-09 11:21:00 499
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八3、FPS——武器系统1)
由于武器有不同种,枪、刀,所以用weapon武器作为接口1、创建IWeapon脚本作为武器接口,脚本是用来攻击敌人2、创建枪械类Firearms,是一种挂件,挂在object上,还要接口IWeapon,且含有攻击方法4、新增方法来控制开枪时间间隔换弹Reload1、换弹可以理解为将CurrentAmmo直接累积到弹夹,使弹夹变满,同时增加子弹需要令自身携带的子弹数量减少2、设置好按R键填充满子弹在animator中添加好开枪动画在方法中添加动画播放的方法:子弹1、制作子弹的预制体2、创
2022-06-08 23:39:15 1100
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八2、FPS——实现手臂资源的行走和奔跑)
从window进入asset store,搜索low poly fps free,获取资源并导入(不导入script脚本),找到arms,获得Assault_Rifle_01_FPSController,并移除掉多余的脚本添加上一篇博客所写的CharacterController,并设置好对应的变量并挂上上一篇含有行走奔跑等操作的脚本在Arms上挂上FPMouseLook脚本(上篇博客所完成)此时,手臂资源可以移动、奔跑、站立,实现资源替换1、 打开arms_assault_rifle_01,删
2022-06-08 21:41:21 323
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八1、FPS——FPS角色控制)
项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八1、FPS——FPS角色控制)
2022-06-08 20:03:09 731
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(七5、酷跑——UI制作与完善)
(1) 人物角色制作(2) 地面制作(3) 游戏结束和重新开始(4) 金币创建与吃金币(5) UI制作与完善制作主界面预设为了方面逻辑与UI之间的控制,制作一个事件管理器,通过事件来降低逻辑与UI之间的耦合度包括订阅事件与时间的触发,在该游戏中,订阅和触发玩家的跳跃事件以及吃金币事件,并进行注销注销事件:和订阅事件一样,仍需要考虑反注册的问题,同时当 时,已经没有监听者了,需要进行移除,即,代码如下:触发事件:其他代码:并定义好游戏所需要的跳跃事件和吃金币事件:四、主界面
2022-06-07 22:34:33 429
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(七4、酷跑——金币创建与吃金币)
(1) 人物角色制作(2) 地面制作(3) 游戏结束和重新开始(4) 金币创建与吃金币1、将金币图片导入到工程中,并设置好精灵图2、制作金币预设三、制作多个金币阵列CoinList0CoinList1CoinList2CoinList3创建一个脚本用来创建金币:将以上四种金币阵列预设存放在数组中,通过随机生成金币阵列,在该方法中,随机金币范围,在加载金币预设后实例化,同时设置金币的初始坐标是之前制作的游戏起始位置中的脚本是用来控制金币移动的设置金币的移动速度,并设置金币在超过
2022-06-07 22:14:40 998
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(七3、酷跑——游戏结束与重新开始)
(1) 人物角色制作(2) 地面制作(3) 游戏结束和重新开始创建两个空物体分别为BottomBorder、LeftBorder,并添加碰撞体组件,调节合适的大小和位置,并将这两个物体的Tag设置为Border1、制作一个游戏结束的界面,并将其设为预制体2、创建脚本,在其中设置“重新开始”按钮监听,当按下按钮后,令界面重新回到游戏开始的界面,游戏重新开始四、游戏管理创建一个GameManager管理游戏准备、进行中、结束的三个状态。创建一个空物体,并挂上脚本,用枚举列举状态五、边缘碰撞检测
2022-06-07 09:34:53 1398
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(七2、酷跑——地面)
目录一、前言二、制作步骤一、前言跑酷是一个较长的场景,采取制作地面预制体的方式进行随机生成二、制作步骤导入地面的照片将每个地面图片使用SpriteRender组件来渲染对每一个地面添加碰撞体使用脚本控制地面移动游戏中看起来是角色在跑,实际上角色没有跑,是地面在跑,所以需要写一个脚本来控制地面的移动地面从起始位置移动到结束为止,到结束位置后又立刻回到起始位置public class Ground5 : MonoBehaviour{ private Transform gro
2022-06-07 09:34:24 1070
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(五、利用AudioMixer控制音量大小)
目录一、前言二、步骤1、创建音量调节面板UI2、AudioSource播放方法3、创建Audio Mixer4、暴露参数5、进行音量调节三、问题一、前言游戏开发过程中,计划设置一个全局控制音量的gui界面,同时可以单独控制背景音乐和其他游戏特效,所以采用了Audio Mixer解决二、步骤1、创建音量调节面板UI创建了两个滑动条,分别控制游戏的背景音乐和音效,并将滑动条的默认值value设为12、AudioSource播放方法可以看到,AudioSource有三个播放方法Play()成员方
2022-04-20 21:48:02 401
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(小地图修改完善)
目录一、前言二、小地图的制作1.小地图制作2.小地图美化三、小地图展示主角移动和主角方向四、小地图放大、缩小五、大小地图六、大地图显示主角移动和主角方向一、前言由于游戏设计,场景较大,且最终玩家在进行相关游戏之后,仍需回到中心点处进行其他活动,单纯的采用只展示部分场景的小地图,可能使玩家在场景中难以找到中心点,影响游戏效率。二、小地图的制作1.小地图制作小地图制作2.小地图美化添加相关遮罩和按钮,同时增加一个image,拖入小箭头的照片,代表小地图上的人物指示三、小地图展示主角移动和主角方向
2022-04-20 17:20:36 2820
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(小地图工作前期知识:摄像机)
目录一、前言二、透视(Perspective)三、正交(Orthographic)四、实际操作时遇到的问题一、前言使用相机制作小地图时,发现Unity的Camera的投影(Projection)设置有如下两种,正交(Orthographic)和透视(Perspective)。二、透视(Perspective)透视模式下的话,摄像机是以一个角度(Field of View),扩散观察。被观察的物体会因离摄像机的远近,而导致最终显示在屏幕的大小位置不同。物体旋转会有离摄像机近的部位显示的偏大,远的部位
2022-04-20 17:17:00 2564
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(三、Unity PlasticSCM多人协同)
目录一、概述二、简介三、操作1.创建PlasitcSCM项目2、进行pull、push、merge操作2.1如何pull(拉取团队成员的修改)?2.2如何push(提交一个checkin到我的branch)?2.3如何merge(给更新修改的分支做合并)?一、概述项目实训团队采用高度整合的Unity PlasticSCM控制系统进行多人协同操作。二、简介类似github的团队协作与控制系统,PlasticSCM是一款性能卓越的版本控制工具,其对巨大项目存储(高达4TB级)以及成千上万个分支频繁创建与
2022-04-20 15:54:24 2894
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(六、实现两类小地图)
目录一、前言二、针对问题一三、针对问题二一、前言1、游戏二地图较大,场景复杂,于是建立一个小地图,在角色上方,显示部分地图内容2、游戏四地图较小,摄像机可以显示全部地图,同时由于为pvp游戏,同时显示敌方位置二、针对问题一首先在canvas下创建一个空对象,并在其下方创建一个RawImage,是ui显示模块,将相机所渲染的显示在canvas上,并将其移动到对应的位置(这里运用了一个圆形的遮盖,令小地图是圆形)在角色下创建一个相机,用来渲染地图,并调整大致位置,令其在角色的正上方接下来创建
2022-04-17 18:31:55 1095
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(一、环境搭建)
文章目录前言一、unity下载二、使用步骤1.引入库2.读入数据总结前言该文章主要包括下载unity和protobuf环境搭建一、unity下载按照教程进行相关下载二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')i
2022-03-26 22:30:10 515
原创 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(综述)
目录前言项目目标项目目标:游戏类型:网络要求:技术要点项目介绍项目架构项目技术项目特色大致功能需求游戏模式/项目内容其他实施计划预期成果前期:中期:后期:分工前言实现一个基于unity的2D多人乱斗闯关游戏的开发。项目目标项目目标:以工程化方式使用Unity引擎开发一款电脑版多人游戏。游戏类型:2D多人乱斗闯关。不同小游戏轮换,玩家之间进行比拼。网络要求:联网。需要游戏大厅、玩家匹配功能。分析目前市场比较火热的游戏,融合特色优点。通过开发掌握软件工程开发各阶段流程。学习Unity
2022-03-24 22:49:30 4920
原创 2021SC@SDUSC HBase(十五)项目代码分析—— WAL 在 RegionServer 基本调用过程
2021SC@SDUSC目录简述简述
2021-12-12 14:00:00 420
原创 2021SC@SDUSC HBase(十四)项目代码分析——WAL生命周期
2021SC@SDUSC目录一、简述二、WAL写入三、WAL滚动四、WAL失效五、WAL删除一、简述WAL的生命周期主要包括WAL的写入、滚动、失效和删除二、WAL写入WAL写入详解三、WAL滚动通过wal日志切换,这样可以避免产生单独的过大的wal日志文件,这样可以方便后续的日志清理(可以将过期日志文件直接删除)另外如果需要使用日志进行恢复时,也可以同时解析多个小的日志文件,缩短恢复所需时间。wal触发切换的场景有如下几种:SyncRunner线程在处理日志同步后,如果有异常发生,就会
2021-12-11 12:00:00 432
原创 2021SC@SDUSC HBase(十三)项目代码分析——WAL写入
2021SC@SDUSC目录一、简述二、机制三、线程模型四、具体实现五、总结一、简述Hbase 的 WAL 机制是保证 hbase 使用 lsm 树存储模型把随机写转化成顺序写,并从内存 read 数据,从而提高大规模读写效率的关键一环。wal 的多生产者单消费者的线程模型让wal的写入变得安全而高效。WAL(Write-Ahead Logging)是数据库系统中保障原子性和持久性的技术,通过使用WAL可以将数据的随机写入变为顺序写入,可以提高数据写入的性能。在hbase中写入数据时,会将数据写入内
2021-12-08 22:01:16 1775
原创 2021SC@SDUSC HBase(十二)项目代码分析——snapshot
2021SC@SDUSC目录一、简述二、实现RestoreSnapshotHandler一、简述上一篇讲述了snapshot的使用,包括snapshot的基础原理、实现(启用的表以及被禁用的表)、功能,这一篇讲述怎么从snapshot中恢复表。二、实现恢复表的方法是restoreSnapshot,这个方法位于HMaster中。if (MetaReader.tableExists(master.getCatalogTracker(), tableName)) { if (master.getA
2021-11-30 10:56:46 1696
原创 2021SC@SDUSC HBase(十一)项目代码分析——snapshot
2021SC@SDUSC目录一、简述二、基础原理三、实现启用的表:被禁用的表:四、功能一、简述snapshot是很多存储系统和数据库系统都支持的功能。一个snapshot是一个全部文件系统或者某个目录在某一时刻的镜像。二、基础原理实现数据文件镜像最简单粗暴的方式是加锁拷贝(之所以需要加锁,是因为镜像得到的数据必须是某一时刻完全一致的数据),拷贝的这段时间不允许对原数据进行任何形式的更新删除,仅提供只读操作,拷贝完成之后再释放锁。这种方式涉及数据的实际拷贝,数据量大的情况下必然会花费大量时间,长时间
2021-11-24 13:00:00 298
原创 2021SC@SDUSC HBase(十)项目代码分析——HBase的压缩编码
2021SC@SDUSC目录一、简述二、key的编码一、简述在存储层面节省空间的处理上,HBase提供了两种方案:1、基于key的编码。用于将key重复部分进行简单处理达到节约空间的目的。2、基于数据库(data block)的压缩。对数据块进行压缩,实现节省硬盘。二、key的编码主要是针对于key很长而且有大量部分重复的场景,如果key大部分长得不一样,那么编码几乎没有优势:prefix...
2021-11-19 11:30:00 1514
原创 2021SC@SDUSC HBase(九)项目代码分析——数据模型
2021SC@SDUSC目录一、简述二、数据模型三、KeyValue四、表定义和列族定义五、使用KeyValue六、总结一、简述HBase是一个KeyValue型的数据库,核心存储结构是KeyValue类,这个类定义了HBase的数据模型,并贯穿了HBase的整个读写链路。同时HBase自身的元数据管理也是使用了业务表相同的模式。二、数据模型Table(表格)一个HBase表格由多行组成Row(行)HBase中的行里面包含一个key和一个或者多个包含值的列。行按照行的key字母顺序存储在表格
2021-11-14 22:36:31 1794
原创 2021SC@SDUSC HBase(八)项目代码分析——Region机制(五)之Region负载均衡
目录一、概述二、负载均衡四、总结一、概述在分布式系统中,负载均衡是一个非常重要的功能,HBase中Region是表按行方向切分的一个个数据区域,由RegionServer负责管理,并向外提供数据读写服务。如果一个RegionServer上的Region过多,那么该RegionServer对应的就会承担过多的读写等服务请求,也就有可能在高并发访问的情况下,造成服务器性能下降甚至宕机。如此,RegionServer间Region的动态负载均衡,也就成了HBase实现高性能读写请求访问的一个需要解决的问题。
2021-11-11 06:00:00 1034
原创 2021SC@SDUSC HBase(七)项目代码分析——Region机制(四)之Region Merge合并
目录一、简述二、Region合并1、Merge的触发2、Merge的流程3、如何进行region合并4、如果在合并region的过程中出现永久RIT三、总结一、简述HBasee中表的基本单位是Region,日常在调用HBase API操作一个表时,交互的数据也会以Region的形式进行呈现。当一个Region被不断的写数据,达到Region的Split的阀值时(由属性hbase.hregion.max.filesize来决定,默认是10GB),该Region就会被Split成2个新的Region。随着业
2021-11-08 21:47:44 501
原创 2021SC@SDUSC HBase(六)项目代码分析——Region机制(三)之Region定位
目录一、初步认识region定位Meta表Region定位Region定位总结一、初步认识region定位在 HBase 中,表的所有行都是按照 RowKey 的字典序排列的,表在行的方向上分割为多个分区(Region),如下图所示。每张表一开始只有一个 Region,但是随着数据的插入,HBase 会根据一定的规则将表进行水平拆分,形成两个 Region。当表中的行越来越多时,就会产生越来越多的 Region,而这些 Region 无法存储到一台机器上时,则可将其分布存储到多台机器上。Meta表
2021-10-31 23:44:34 2174
原创 2021SC@SDUSC HBase(四)项目代码分析——Region机制(一)之概念
2021SC@SDUSC目录一、Region概念一、Region概念Region是HBase集群分布数据的最小单位。Region是部分数据,所以是所有数据的一个自己,但Region包括完整的行,所以Region是行为单位表的一个子集。
2021-10-21 23:30:59 294
原创 2021SC@SDUSC HBase(三)项目代码分析——RPC通信(下)
2021SC@SDUSC目录一、RPC简介二、HBase中RPC概况Server端RPC实现Client端RPC实现1、HBaseRPC getProxy入口2、getConnection()方法3、SelectorPool的select4、call5、Reader/Writer IO操作三、总结一、RPC简介作为一个分布式系统,HBase的设计是典型的master-salve架构,HBase中主要有Master,RegionServer,Client三个角色,而RPC是Master、RegionSe
2021-10-17 20:35:04 230
原创 2021SC@SDUSC HBase(二)项目代码分析——RPC通信(上)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-10-06 22:47:36 401
原创 2021SC@SDUSC HBase(一) 项目综述
2021SC@SDUSC目录一、HBase概述什么是HBaseHBase模块HBase中相关模块的作用逻辑模型特点1.半结构化数据:2.可扩展性:3.有序映射的映射集合:二、HBase安装与配置centos下安装HBaseZookeeper安装与配置HBase Shell验证环境三、任务划分一、HBase概述什么是HBaseHbase是一种构建在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统,主要用来存储非结构化和半结构化的松散数据。HBase利用hadoop HDFS作为
2021-09-29 13:47:18 397
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人