construct2 ajax,Construct2/3

我们常在游戏中见到各种各样的剧情对话,电子游戏从最早的RPG类对话框演变至今,已经产生了无数种解决方案。但总的来说,常见的对话分为两类:

最常见的galgame对话,可以看到较大的立绘图表现人物的表情动态(甚至动画),以及标记角色的名字和对话内容。

490019601057345dc6390017b41f4a9b.png

或者也有一些游戏使用pop的悬浮对话窗口直接表现,对话框与角色位置匹配,同时不干扰游戏环境的演出效果(例如可以一边行走战斗,pop框还依然出现)

fafddd49cb56aa784d9b8dc7fda3185e.png

分析制作方案,有2个要素:

1 资源

2 配置

由于各个游戏的需求不同所以我们先从最低需求的资源和配置来讲。

对话框资源,我们最低限度需要有一个框体和一个对话文本框。框体用来做文本的背景,文本框显示对话内容。然后再根据游戏需求的不同添加立绘用的图片加载框,角色名文本框等。

如果是pop类型的对话,也可能需要添加箭头资源(也可能需要区分对话和思考的箭头和泡泡)

1303bf68f994c567a9ae205b98765661.png

配置部分则比较复杂,首先我们需要先理解对话的最基本结构。

这部分很好理解,对话就是一句一句的文本,说完一句进入下一句,所以我们可以将对话的配置设计为一连串的对话ID,比如ID 1000代表第一句话,这句完了就说ID为1001的那句:

8970de4e96628795e35e521219f939ab.png

(请暂时忽略文本里奇怪的标签)

很好,这样只要将这一串ID里的文本顺序播放,一句完毕显示下一句,最基础的对话框配置就做好了。

接下来,我们需要添加一个标记,表示1014这句话是这段对话的最后一句,这样程序当识别到这个标记就会在这段对话结束的时候关闭对话框,例如next标记0表示这是段落的最后一句话:

9df35e51e1c2f402bbe407c6810aeb29.png

在添加了文本后,我们也需要区分对话是谁说的。所以还需要添加名字和立绘的配置列:

c73c23de92452985660dbb56a2bded63.png

如图role标识立绘用图的名字

side标识立绘在对话框的左侧还是右侧,在制作的时候会自动反转立绘

name标识说话的角色名字,显示在对话前面

关于文本打字效果:

文本打字效果是对话框的常用效果,可以有效的控制阅读节奏,同时在单调的对话中有限的制造一些演出效果。

打字效果可以控制打字速度,并且可以在每个字出现的时候产生各种效果(参考逆转裁判里的经典用法)

timg?image&quality=80&size=b9999_10000&sec=1534070428070&di=f2f6d718d9f5415f4f4905d1f90f84bf&imgtype=0&src=http%3A%2F%2Fww2.sinaimg.cn%2Fmw690%2F9c73c548gw1f187bom6njg20b406o4es.gif

基于打字效果产生的更多的细节:

764a9ff29808bed483abd98e673d476e.pngspeed标记打字速度,0.5表示0.5秒打一个字

audio标记打字音效,即每个字出现时播放的音效

shake标记打字震屏效果,填写的数值表示震屏强度

auto标记文本是否自动下一句话(可以参考逆转裁判中犯人崩溃的桥段),一旦标记为auto则不需要按键也会自动进入下一句

size标记文本的字号

以下是最终效果(不过听不到声音啦)

a45db09981477062c027a0569aaa4f8e.gif

更多扩展:flash 闪屏

bg 改变背景图

bgm 改变背景音乐

posXY 改变立绘坐标使之偏移

effect 产生某个特定的特效

pop类对话看起来比固定对话框要简单,不需要显示名字,没有立绘,受限于pop的尺寸文本也不可能做很多。但实际上,pop类对话比固定对话复杂很多:pop框的尺寸需要和文本量匹配

需要与说话的角色位置对应,甚至跟随移动

pop对话的时候,可能需要与角色行为产生关系(例如更换动画)

pop对话也许根本不会暂停游戏

POP框体的制作

在讲述pop的制作方法前,需要普及一下pop的资源制作方法和在UI中的使用类型。

在UI控件中有一类名为9patch的控件。和普通的精灵图片不同,9patch可以将一个图片按井字分隔为9个格子,如下图:

a63ba27606092f11aff3e7d041131ce0.png

如果是普通的精灵图片,在缩放的时候就会产生形变和模糊

7cb23ffea393830896a2cbc0b9e75927.gif

而9patch控件可以将保证4个角不变的情况下自由拉伸并且不会模糊,实现固定倒角的随意缩放的圆角矩形:

6d6dc482f6b95c33063143605b5f9773.gif

一旦基础的pop对话框资源搞定以后,后面的事情就会简单很多:

当对话框弹出后将pop框体+箭头+文本创建在指定的角色上方(固定的点)

与上次讲的固定框体一样使用打字的方法讲文本一个一个打出来

限制文本框的宽度,超过一定宽度(或有主动的文本回车)自动换行

将pop框的尺寸与文本框的尺寸匹配(当然四周需要留一些空间)

控制好框体的坐标(匹配对话框箭头的位置,如果变大需要向上“长”)

对话框缩放的效果(目前GIF帧率低看不出来,其实框体的变化是更有“弹性”)

c2b5a96886f0cf61668aab0b43a7489b.gif

上图是完成的效果,因为偷懒,所以pop框采用了和固定框不一样的创建方式。每说一句话都会删掉当前框体,下句话重新创建pop框体并从最小尺寸开始。

对话与角色匹配

由于pop对话的方案需要让框体出现在指定的角色头上,所以需要为对话配置对应角色的字符(比如特定的名字),由程序逻辑找到那个角色并创建对话框(例如场景中有5个一样的NPC,我们只想让第二个NPC说话,这种时候就需要为他配置特殊的标记才能找到他)

角色是否受控?游戏是否暂停?

根据情况,可以将角色置为不受控状态,或干脆暂停游戏播放固定的对话或演绎动画剧情。但也有非剧情对话的情况(比如敌人或NPC的随机喊话),需要区分处理。

对话镜头

可以配置对话出现时镜头拉到说话角色的位置,用于跟踪对话主体或跨屏演出效果

剧情段落

除了NPC或敌人不受控制的自言自语外(程序设置的某种规律的随机说话),大部分的对话都是受剧情控制的综合演出效果,这种时候往往只依靠对话表不太够用。

实际上当游戏中对话文本过多的时候,可能还需要再高一个层级的配置,用来更方便的管理对话的开始和结束,对话的类型方案等等。如果对话叫做talk的话,这个配置可以称之为story。

在story中最基本的配置除了ID外便是talk的开始ID和结束ID。还可以配置这段对话是固定对话框还是pop对话框,甚至产生某些混合方案,例如控制剧情之间的衔接关系。

演出效果的相关内容:对话

动画控制

镜头控制

行为控制(例如移动或跳到某处)

功能控制(例如某些开关自动开启)

效果(特效,音乐音效)

u=534980179,2053280950&fm=27&gp=0.jpg

其实大部分我还没做,慢慢实现吧……orz

所以先这样吧……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526361.shtml

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

相关文章

tcp中的crc检验算法原理_在数据传输过程中的CRC 算法的简单说明

CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CRC算法应是嵌入式程序员的基本技能。可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少&#xff…

服务器修改用户组权限设置,如何:修改用户的权限

如何:修改用户的权限08/18/2008本文内容更新:2007 年 11 月随着时间的推移,若要对管理和项目需求进行更改,可能要求您更改 Team Foundation Server 服务器级或项目级用户的权限。更改单个用户的权限前,可将其移除&…

和氟西汀类似的备注_撒狗粮:可爱又霸气的给男朋友的微信备注

在微信里,你的男朋友是怎么被你备注的? 是“老公”,“儿子”,还是“死鬼”? 看看各地网友们的精彩备注吧!——————————————————————小垃圾大宝贝小闹闹周少爷chou狗软蛋蛋小可爱免费鸭…

服务器+返回500错误信息,HttpWebResponse远程服务器返回错误: (500) 内部服务器错误 的解决办法...

在工作中用C#开发了一个小程序,不断访问去请求一个网站的页面,在循环过程中有时会报“远程服务器返回错误: (500) 内部服务器错误”,有时不会,出现的时机也不太一样。开始以为是网站的问题,后来网站是可以正常访问的&a…

ogg 查看某条更新_明道云Web 6.1更新:日历视图上线

更新时间:2020年12月22日(周二)19点预计时长:2小时是否停服:否版本代号:Web 6.1(移动端需同步强制更新)主要更新功能日历视图日历视图让用户能从时间维度排列并管理业务数据&#xf…

服务器的可维护性,可靠性和可维护性

可靠性和可维护性可靠性一直是戴尔服务器产品线的一大亮点,R515也不例外。如内部结构所示,当你打开R515机箱的时候,你可以很明显地看到风扇的数量、分布的各个组件和双电源机箱。你也可以感觉出从中取出各个组件和拆装机箱都十分简便。配合低…

createdroptargets_使用DUILIB建立项目

使用DUILIB加载XML界面这篇主要目的就是教给大家怎样在自己的工程中加载XML界面,这是最基本的应用,对于界面控件响应啥的,我就不讲了,在大家懂了这个之后,我会给大家一个其它人写的博客,再看他的文章&#…

服务器缺少storportSYS文件,Windows操作系统蓝屏日志分析方法

或许你可以先检测下机器硬件健康状况,详情点击查看检测教程工具:X64 Debuggers And Tools-x64_en-us 下载地址:链接:http://pan.baidu.com/s/1cAO2ey 密码:9oms源文件:DMP蓝屏日志 ,文件目录查看…

vue 时区转换_vue---时间戳转换

在/assets下创建一个utils.jsfunction formatDate(date, fmt) {if (/(y)/.test(fmt)) {fmt fmt.replace(RegExp.$1, (date.getFullYear() ).substr(4 - RegExp.$1.length))}let o {M: date.getMonth() 1,d: date.getDate(),h: date.getHours(),m: date.getMinutes(),s: dat…

过滤特征_LR训练优化-稀疏特征过滤

一、背景在推荐系统中,LR由于简单高效,至今在各大互联网公司中仍广泛应用。但是互联网公司中的数据大都是高维稀疏,比如广告id,再加上各种人工的特征组合,特征维度很容易达到上亿维,使得内存的消耗和训练的…

合并工具_你值得拥有这个PDF合并工具 免费获取转换方法

合并PDF文件?很多人在日常生活中经常会需要使用到合并文档的要求,但是不是所有的人都能够很熟练的去合并我们生活中常用的文件,例如PDF,例如Word和Excel等等,其实只要我们学会了PDF合并的方法,以上文件的合…

python中eof表示什么语句错误_python中pickle的EOF错误

根据这些评论,我对最有可能的问题有一个猜测,但至少有50%的可能性我猜错了,在这种情况下……告诉我,我会删除答案。在我猜你是在尝试使用流套接字,就好像它是一个消息序列一样。这是网络编程新手中非常常见的问题。在想…

事物与持久化_跟面试官侃半小时MySQL事务,说完原子性、一致性、持久性的实现...

提到MySQL的事物,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关。而事务的ACID(即原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)可以说涵盖了事务…

cookie里面用到的关键字_晓龙吊打面试官系列:synchronized关键字入门(同步方法与同步代码块)...

文章目录一、 线程安全问题二、synchronized简介1) 原子性2) 可见性3) 有序性4)可重入1. 什么是synchronized2.什么是同步3.synchronized的特性4.synchronized的实现原理(了解即可)三、synchronized的用法1. 同步方法2. 同步代码块四、对象锁和类锁1)对象锁2)类锁1.对象锁的探索…

mac vscode 背景半透明_给 vscode 添加半透明毛玻璃效果

Electron 可以调用 MacOS 的毛玻璃效果,下面让我来带你给 VScode 添加毛玻璃效果。2. 创建一个 CSS 文件(CSS 是我自己写的,你可以按需修改)html {background: transparent !important;}.scroll-decoration {box-shadow: none !important;}.minimap {opa…

python队列精灵对战_python队列Queue

python2, 参考思路.QueueQueue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递基本FIFO队列class Queue.Queue(maxsize0)FIFO即First in First Out,先进先出…

mysql 函数返回查询结果_MySQL数据库中常用查询函数简介

MYSQL中的常用函数count(*)---相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。 select count(*) from yinxiong;Count(列名)表示统计此列当中总行数(不计算null所在的行)Count(distinct 列名&#xf…

属性值动态调整_这可能是你见过最牛的CAD粗糙度动态块了!

好课推荐:零基础CAD:点我CAD家装:点我 周站长CAD:点我CAD机械:点我revit教程:点我CAD建筑:点我CAD三维:点我全屋定制:点我 ps教程:点我苹果版CAD:点我 3dmax教…

mysql like_MySQL LIKE:模糊查询

在 MySQL 中,LIKE 关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:[NOT] LIKE 字符串其中:NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。字符串:指定用来匹配的字符串。“字符串…

bootstrap mysql源码_Django+Bootstrap+Mysql 搭建个人博客 (六)

6.1.comments插件(1)安装pip install django-contrib-comments(02)settingsINSTALLED_APPS [django.contrib.sites,django_comments,]SITE_ID 1(3)website/urlurl(r^comments/, include(django_comments.urls)),(4)修改源码django_comments/abstracts.py第36行原代码site mode…