Dialogue System for Unity制作剧情,我们需要一个什么样的需求

来源:互联网 发布:ipad如何进入淘宝闲鱼 编辑:程序博客网 时间:2024/06/09 16:50

我们先看下改版的Dialogue System for Unity要完成我们仙剑demo的效果。




好了,忙忙活活,看到效果了吧,如果对效果不满意,想要考虑做一个电视剧级别的剧情系统,那么建议在制作过程中,招聘一名专业的分镜师,这就不在我们讨论的范围内了,以上这个东西是怎么实现的呢,就是我们前面用得到东西,我已经把整个需要的东西写好了做成预制件了,想使用,只要拖预制件进场景,然后改模型,设计剧情就可以了,另外,这几天玩了下新剑侠传奇这款游戏,为比较下当下的过场游戏剧情系统,新剑侠传奇用的在同一场景触发模式来完成剧情,就是在同一场景中设置很多开关(bool变量),当进入这个剧情时,这个开关开启,然后,当化身进入碰撞区域时触发剧情,当完成剧情,开关关闭,这种模式有个好处,就是剧情触发不需要加载多余的资源,不用场景转换,缺点吗,同一场景添加过多的开关真的好吗?另外因为剧情中除了剧情中必要的人物之外,有大量不需要的物品人物存在,可能造成测试的工作量加大,因为不可控因素可能增加,我举个例子,比如街道上要触发一个剧情,但开始街道上有一个自动寻路的路人,当剧情触发时,如果这个路人恰好走到对话的几个人中间,那就对我们需要的剧情产生了遮挡,这个虽然我们在测试中会发现改动,比如控制npc活动路线等等,但人为的加大工作量,我觉得,没有必要,不过如果游戏一定需要这样,那么说一下怎么制作,首先在场景中放一个空预制件,在这个预制件上面绑一个触发器(一会我会讲什么东西),然后把预制件拉到预制件文件夹,删除场景中的,在需要的地方做一个触发器(碰撞检测),当触发时,instance这个预制件。

前面写了12篇文章讲来讲去都是这个剧情系统,他到底是怎么做的,我们现在开始讲解,首先看下,secne窗口是什么样的


我们从上图中可以看到,场景中一共有菱纱和紫英两个人物模型,hierarchy窗口中的heyangcheng和night water,directional light是场景环境,灯光,我们不考虑

我们点private hart看看紫英什么样字一个身上包裹着两个球体,里面的是胶囊碰撞体,外面的是干什么呢,我们看下属性面板在紫英身上绑定了一个名为ai的预制件,我们看下

上面绑的这些脚本都是干什么用的,具体参数,我们一会看,我们看下韩菱纱

setenabled ondialogue event是我们的触发器trigger,是我们的触发类型,其他类型还有bark,sequence等等,我们这里是conversation,这个触发器如何作用的呢紫英ai上面绑的

很直观,事件发起者,接受者,在场景开始的时候触发,因为,我们剧情过程中,两人交互是没有停止的,所以好需要一个在剧情中的触发器,其他的3个脚本是角色行为控制,我们这里只贴下我们回到菱纱身上帮了一个摄像机位置预制件over the shoulder

人物这样我们就设计好了,怎么让两个人物动起来呢,这里我们要先添加场景控制器它上面挂在了一个Plademo1的datebase文件,也就是我们要设计的剧情脚本文件,我们就是靠他来完成对场景中模型身上绑定脚本的控制的,有朋友说我为什么没有给模型改名,这个就是图省事,可以在这个datebase里面的选项中设定场景中需要的人物名称,我们看下它里面都有什么如果需要修改,就在这改,其他的我们先跳过,直接看我们的剧情脚本很简单,并不复杂,我讲讲具体条目中都写了什么首先看第一个条目,这是脚本的入口,什么都没有,可以考到只有一个函数none()第二个条目,是控制韩菱纱移动,,我们可以看到动画控制函数animator和moveto两个方法的套用,具体参数什么意思,请参照我前一篇的api讲解,其实就是韩菱纱开场就开始行走动作,第2秒开始走向gameaudio这个场景中的位置,持续8秒钟,在第十秒的时候,停下来,动作改为idle之后我们看到镜头切换给了紫英,紫英不同的是,有了对话另外方法中,有一个audio方法,这个方法就是我们的语音同步,当显示上面的字幕时,紫英也会发出正常的说话声音,因为模型没有面部骨骼绑定,所以口型同步没有加,如果有模型,同样可以实现表情同步,之后的对话其实都是依据这个模式,


好了我们看下场景中的gameaudio是什么东西其实他就是场景中的一个空的gameobject,上面绑了一个audiosource组件,小伙伴要问了为什么不在韩菱纱和紫英身上帮这个呢,这是因为,我们的对话是设定为,当点击鼠标左键在字幕上的时候跳过当前对话,如果在两个人身上都绑定的话,要注销上一个声音控制,然后启动下一个,这个在实际应用中很麻烦,在场景中尽量只用一个声音的好处就是不会出混声,比如,菱纱没说完话,玩家点了跳过,结果紫英说话了, 这时有可能出现两个声音,要规避,需要写格外的代码,所以我们直接使用这种单一声音来源,来解决

最后这个东西是官方提供的一个预制件,不过我做了修改,因为修改的地方挺多,没办法贴出来,这个等全部的文章发完之后,我会放出源码和工程文件,到时候大家自己研究,或者直接拖拽使用,好了这篇就到这里。剧情结束之后,我们下一步讲讲换装和武器穿戴,以及场景光线探测,shader的基础东西,当然,还有些关于网络的。




1 0