位置: 编程技术 - 正文

使用Unity3D编写ARPG游戏——角色属性的定义与实现(一)(unity制作ar手机游戏)

编辑:rootadmin

推荐整理分享使用Unity3D编写ARPG游戏——角色属性的定义与实现(一)(unity制作ar手机游戏),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity ar demo,unity3d平台ar与vr开发快速上手,unity3d做ar,unity ar ui,unity3d做ar,unity3d平台ar与vr开发快速上手,unity ar开发教程,unity ar开发教程,内容如对您有帮助,希望把文章链接给更多的朋友!

今天考完了大学最后一门考试,是瞬间感觉轻松了一点,花了一天多的时间预习一本书,马上就去考试了,就结果而言还是不错的。但是不知道是一种解脱,还是马上要戴上的一种新的枷锁。总归还是不错的。好了,闲话少扯,继续谈谈如何制作一款ARPG游戏,sunset在上两篇博客中已经介绍过了几种常见的ARPG游戏的人物控制方式,都比较简单,易于理解。接下来来看看制作ARPG游戏还需要什么,先从玩家可操作的角色出发,我们还需要人物的血量,或者用于释放魔法的魔量,这样就转入一种新的概念——人物属性。下面开始sunset个人编写的可视化人物属性编辑器:

人物属性分析

我们不能还没有经过分析或者思考就去动手写代码,这样只会一味给自己增加难度,延后代码编写完成的时间,这也是软件工程的基本理论。在首先编写代码之前,先来分析一下:我们需要什么?一个属性编辑器;这个编辑器中包含哪些属性?只要玩过一定数量的游戏,就会明白游戏人物一般都会有移动速度,攻击速度,攻击力,防御力等等属性值。我举例一款对属性比较看重的游戏——《Dota2》。虽然这款游戏是一款Moba游戏,但是丝毫不妨碍我们对属性经行分析,《Dota2》里英雄的属性包括:力量、敏捷、智力、攻击力、护甲、移动速度、转身速率、攻击速度、攻击距离等等等等。通过一款优秀的游戏可以得出我们所需要的解决的问题的答案,我们是否也需要敏捷、智力等等属性呢?一切都由你来决定,因为这是你的游戏。 sunset在个人制作的ARPG游戏项目中采用了这样一些属性:等级(LV)、血量(HP)、魔法值(MP)、攻击力(Attack)、防御力(Defend)、强壮(Strength)、敏捷(Agility)、智力(Intelligence)、体力(Power)、移动速度(MoveSpeed)、转身速度(RotationSpeed)、攻击距离(AttackRange)、暴击伤害百分比(CriticalDamage)、暴击概率(CriticalRate)等。这些属性值基本上满足了一款ARPG游戏的属性要求。接下来sunset给出的属性编辑器也基本上是基于这些属性进行编写的。

编辑器编写思考

经过属性中基本的属性量的定义后,我们还要进一步思考脚本该怎么编写才能使其更加易用与将来可能出现的武器属性加成或者被动技能属性加成等问题。所以将属性又分别分成几种类型:1)基础属性(BaseAttribute);2)额外(附加)属性(AdditiveAtribute);3)当前属性(CurrentAttribute);4)升级属性(GrowthAttribute);5)总属性(SumAttribute)等。这部分必须进行仔细思考,当写到一半才发觉还需要定义新的属性类型才能完成编写而不得不回头的时候,你会感觉非常无奈而致使完成时间向后拖延,所以经过仔细思考后再动手会事半功倍(个人经验)。

编写第一步——定义属性类

C#是面向对象的编程语言,所以我们直接定义“属性”类,并定义类属性,针对每个类的实例对象编写实现方法。代码如下:

注释的相当仔细,一看就懂。 然后我们还需要定义一些单独存在的量:比如最高等级,最大经验值、当前等级所需经验,如果有各种动画状态,还需要单独定义步行速度(WalkSpeed)、跑步速度(RunSpeed)、左右转身时向左或向右移动的速度(TurnSpeed),或者还可以定义后退时的移动速度(BackwardSpeed),看个人需求。然后定义出上文代码中定义的类对象的实例对象,编写过程中主要是使用类的实例对象。代码:

嗯,基本需要用到的量都已经定义好了,下一步开始编写方法使用这些量。

编写第二步——实施方法使用Unity3D编写ARPG游戏——角色属性的定义与实现(一)(unity制作ar手机游戏)

我们首先来编写人物经验的计算方法,这里sunset个人所用的经验计算公式是:基数A * 当前等级 * 当前等级 + 基数B * 当前等级。这算是一种较为简单的计算方法了,一个一元二次方程。这个可以自行决定。先计算到当前为止所获得的所有经验量(包括当前等级到下一级),然后计算当前等级所需经验:(这里所采用的基数A和B分别为和)

然后更新当前经验值:

先判断当前等级是否大于最高等级,再判断当前经验是否达到当前等级所要求的经验量,如果达到就升级,并更新相关属性。升级时恢复血量和魔量到最大值。 接下来是更新相关属性的方法:

这里主要说明一下,sunset个人定义的属性中强壮部分决定了攻击力和血量上限,体力部分决定了防御力,智力部分决定了魔法值上限,敏捷部分决定了各种速度等等,自行理解。 然后在计算更新属性方法中还定义了一种当存在升级点数加成时,计算升级属性相关的方法:

这样更新属性方面的相关方法就差不多了,然后我们还要检测血量等属性值,避免血量等属性值超过总属性值。

这样属性编辑器在原始属性定义方面就差不多完成了,然而现在我们编写的还只是脚本,不能算的上是一种可视化编辑器,还需要编辑一个Editor文件来对上文定义的变量进行值的输入。Editor文件的编写在原理上是十分简单的,就是一味的套用Unity本身的制定的GUIEditor的方法就好了,编写插件也是通过这种方法进行编写的,只是编写的好坏以及是否美观简洁、是否易于输入与识别的区别而已,这当然需要大量的动手编写经验。基本的语法都可以在API文档中找到sunset在这里不再赘述给出sunset个人编写的一个简单的人物属性Editor文件的源代码:

嗯,Editor文件只是一系列重复的语句,修改其中的关键词以符合各种属性就好了,是不是很简单呢?程序编写的脚本能让策划简单易懂的实现值的输入是非常重要的,写的美观简洁易懂不止是给策划方便,也是给自己方便。嗯,今天写的有点多了,现在时间也很晚了至于人物编辑器编写的剩下部分就明天下午更吧,就这样。

某网贴出来的u3d面试题目汇总,当时学习下(好多我都不会呢) 在蛮牛网看到这个东西,原作者我也没注意是谁,看了下很多知识我都不会呀,算是学习一下吧,这里贴出来,大家看看。第一部分1.请简述类型与引用

关于Unity Plugins文件夹 如果Plugins文件夹中存在Plugins/x和Plugins/x_这两个文件夹,则dll必须放入这两个文件夹中,否则会出现找不到dll的情况

【Unity-Shader】Unity个内置Shader代码浅析(一) Sunset虽然还没有正式开始工作,但已经有一点小忙了,总是感觉有好多好多不得不做的事,即使身心都有点疲倦。这次带来的是Unity内置的个Shader代码

标签: unity制作ar手机游戏

本文链接地址:https://www.jiuchutong.com/biancheng/369235.html 转载请保留说明!

上一篇:[置顶] Unity ----- 对象池GameObjectPool([置顶]马粥街残酷史)

下一篇:某网贴出来的u3d面试题目汇总,当时学习下(好多我都不会呢)

  • 个人所得税年终奖单独计税怎么操作
  • 彩票税率税率
  • 辅导期一般纳税人管理办法
  • 企业给员工交公积金国家有规定的
  • 税控系统维护费怎么做会计分录
  • 海外工作薪资比国内高多少
  • 没有支付运费会怎样
  • 现金形式发放的福利需要扣税吗
  • 增值税都有哪些科目
  • 累计折旧是费用岗负责的吗
  • 顾客抽奖代扣个税账务处理
  • 建筑业出售废旧电脑取的收入如何申报
  • 代账报税软件哪个好
  • 现金折扣应不应计入成本
  • 增值税纳税申报表在哪里打印
  • 进出口总额比上年同期
  • 拆迁安置土地的补偿标准
  • 企业微信收款怎么提现
  • 应交税费进项税额在借方说明什么
  • mac系统技巧
  • 如何预防计算机病毒的方法
  • 没有签订劳动合同上班期间受伤怎么赔偿
  • 入库单做账是预付款还是应付款
  • 递延收益为什么计税基础为0
  • PHP:mb_ereg_search_getpos()的用法_mbstring函数
  • session php用法
  • ipssvc.exe - ipssvc是什么进程 有什么作用
  • 代垫费用的进项怎么抵扣
  • low是什么文件
  • 工业用地被政府征收怎么补偿
  • php控制器是用来做什么的
  • framework怎么更新
  • 用smart原则改写年底前完善客户资料
  • 网络安全文章1000字
  • 基于Python的图书馆信息管理系统研发
  • 产成品核算的内容
  • 物流发票的税率怎么算
  • 利润的调增和调减
  • echarts 官网
  • 处置子公司账务处理
  • 银行的抵债资产是否需要缴纳房产税
  • 母公司的资质怎样才能转给子公司
  • 完美解决怠速抖动加油就平稳
  • 小规模纳税人营业额
  • 代收代缴水费收不上来怎么办
  • 认证一般纳税人之后,之前开的发票作废重新填开的税率
  • 4s店除了卖车还有什么
  • 会计为什么不能有0
  • 开票人是管理员可以报销吗
  • 个税手续费返还增值税申报表怎么填
  • 外包工程会计怎么做账
  • 固定资产报废能否继续使用
  • 软件退税款会计如何处理
  • 行政事业单位的营业执照叫什么
  • 收据 和发票
  • 没有发票的福利费支出可以税前扣除吗
  • 普票的销项负数怎么开
  • 什么情况下需要打狂犬疫苗
  • 没有发票也可以报销
  • 递延所得税资产账务处理
  • sql数据采集
  • freebsd 网卡驱动
  • bios密码忘记了取电池不管用
  • 安装win7系统后鼠标键盘不能用
  • linux如何挂载iso文件
  • 有没有win8系统
  • win8任务栏图标太大了
  • javascript中有哪些数据类型
  • jquery遍历li
  • 批处理改ipv4地址
  • javascript SpiderMonkey中的函数序列化如何进行
  • shell脚本遍历文件
  • python中子类继承父类的静态方法吗
  • js接收excel文件流
  • 如何找回电子税务局企业密码
  • 陕西省电力app
  • 济南保安证查询系统
  • 建筑企业个人所得税管理办法
  • 企业可以出台政策吗
  • 开原航天医院官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设