Dungeon Mizarka 013

怪物实作

怪物是由多个子物件组合而成的,其阶层看起来可能会是如下所示

利用子物件达成其功能的分类,目前的分类主要为四大类

  • AI
  • Inventory
  • Stats(Attribute)
  • Directional

其中的Directional是负责怪物面向的部份,而这个部份其实是很复杂的。

面向

提到面向,又回到前几天的考量。由於是固定90度呈现,所以怪物应该是会有四个面向的呈现,合并怪物左边和右边看起来是一样的,仍有三个面向的呈现,但在目前能利用的资源考量下,也就只能提供一个面向也就是正面的呈现。实际上光是呈现正面也有些不容易,多数能使用的资源其实是左、右面向(侧边)的,但也就将就的进行其呈现。

多数时间点怪物都是以面向玩家为主要呈现,随着玩家的位置而调整自己的面向,且没有任何需求要背对玩家,实际上,以Sprite为主的呈现,正反二面都会呈现,只是看起来像是左右颠倒,也没有多大的差异。

而玩家的攻击是直接按压後生成从玩家到按压点的射线,且这个射线仍是以怪物的本体或是额外配置物为基准点进行判定。所以多数的配置物都会放在怪物的前面,也就是在玩家和怪物本体之间。也就因为这个考量点,除了Sprite的呈现有其面向,其它配置物也会有,故需要额外再开设一层子物件进行,也就是这里的Direction Base。

也就是有这些考量和资源利用的限制,可能要配合Direction Base的旋转进行侧边的显示。

思量後决定先用侧面45度角的方式呈现的侧面,日後再搭配背後呈现的机制(可能会用Shader处理,也可能直接加工美术图像)。

再度回到Inventory的制作

後来UIS开发者有回覆

My guess is that you are having issues adding items at edit time because we serialize them using a custom serializer. So you must serialize and save the component each time you make a change.

Another approach you could take is having another component which adds items to an inventory on start by reading a text file.

和我想的差不多,也就是利用额外的一份资料,不论是ScriptablObject也好,Text档案也好,又或是另一个专门放资料的元件。利用Variables元件,则会看起来像是这样

用这个方式做直接的问题是在於,如果额外准备了一份资料,除了Equipped(装备)有需要进入到UIS里让装备放置在场景中合理的位置,Backpack和Drops的意义变得稍稍薄弱。

这里的Backpack是怪物的背包,在Variables里已放入了一放资料,其实在Runtime也可以直接使用了,不用透过UIS的Inventory进行。毕竟在UIS里,对於这部份的处理也就是拿出道具後生成ItemObject gameobject,再执行引用。更不用说Drops,概念也是差不多,只是这个ItemObject有额外的Pickup元件。

说实在的这和已经有一份资料(放在Variables),能做的事几近相同。但为了要配合UIS目前的序列化机制,只能用这个方式进行,不是很优的解决方案,但暂时只能这样了。

接下来要开始进行怪物和道具之间的整合,也要开始实际在Runtime时利用UIS提供的机制给予相对应的行为了。


<<:  Day 25:获取位置经纬度

>>:  [重构倒数第06天] - 前端除了要做预览图还要把图片变模糊 !

Day 04 - 行前说明 — 谈谈元件化开发与开发流程

如昨天预告的一样,今天来介绍元件化开发的技术背景,它是什麽、为什麽重要,最後再讲一下元件的开发流程...

Run HEX File 之 Debug 总集篇

今天就是 Debug 总集篇, 前面都是用猴子自己瞎掰设计的 Code Stream 来验证, 这次...

【心得】你今天青蛙了吗?flex之路-flex设定了宽却没有用???

前言 曾经有一段瞎摸索的时间,老是不知道为什麽flex时灵时不灵 歪着脑袋想不通为什麽... 直到摸...

[DAY26] 导入 DDD 时尚未深究的问题

这篇罗列导入 DDD 时遇到的困难,以及针对这些问题,在团队内还没有确切设计共识时,我们的处理方式。...

Day 13 文字人脸效果

文字人脸效果 教学原文参考:文字人脸效果 这篇文章会介绍使用 GIMP 的图层混合功能,搭配文字输入...