THE NVL Maker

 找回密码
 注册
搜索
查看: 11663|回复: 1

[系统修改] 请问如何在主对话界面弹出子界面等5个问题。

[复制链接]

2

主题

3

帖子

0

精华

游戏开发者

积分
3
发表于 2020-8-7 10:55:27 | 显示全部楼层 |阅读模式
1、如何在主对话界面的左右新增两个按键,点击按键后,会在屏幕左侧/右侧弹出子界面,进行地图切换/人员&道具信息查看?
暂定逻辑如下:

如果 场景切换模式为false时,按下左侧按键/从左侧滑动屏幕至右侧
  场景组件向左移动出现,同时场景切换模式为true

  当场景切换模式为true时
    在场景组件内,滚动滚轮/上下拖动时
      场景按钮根据对应方向滚动。
    如果点击场景组件之外/按下左侧按键/从右侧滑动屏幕至左侧
      场景组件收回,同时场景切换模式为false
    点击场景组件内任意一个按钮时
      如果是首次前往,跳出地区的简介,而后确认是否前往
        确认后,播放效果,前往对应地点
      如果不是首次前往,则直接播放效果前往对应地点
    长按场景组件内任意一个按钮时
      跳出地区的简介


如果 道具人员查看模式为false时,按下右侧按键/从右侧滑动屏幕至左侧
  道具人员组件向右移动出现,道具人员查看模式为true

  当道具人员查看模式为true时
    在组件内,滚动滚轮/上下拖动时
      道具/人员按钮根据对应方向滚动。
    如果点击组件之外/按下右侧按键/从左侧滑动屏幕至左侧
      组件收回,同时具人员查看模式为false
    点击组件内任意一个按钮时
      弹出相关信息
        如果可以使用,则出现“使用”按钮
    长按场景组件内任意一个按钮时
      跳出物品/人物的简介
      弹出相关信息,直至松开鼠标



2、如何在游戏中设置场景探索,即“并非文字内容,仅是一张图片的,当前场景独有的对话选择按钮”?
效果可类比《逆转裁判》系列中对犯罪现场的勘查。
以及,基于该问题的衍生,如何在不同的场景中加载不同的对话选项表现?
具体举例而言,在正常对话时使用场景的对话选项框,而在进行类似探案/拷问的场合,对话框的造型和位置都会发生变化

3、如何根据点选对话的内容,使背景播放脚本动作?
具体举例而言
在玩家选择选项1后,在背景左右两侧会“推入”两个不同的组件,和原本的背景形成新的画面。

4、与问题1、问题3联动,以下效果应当如何实现?
在开启道具菜单,点选道具后,背景上方会“推入”点选的道具,和原本的背景形成新的画面。
在开启道具菜单,点选道具后,道具会磁性吸附在鼠标上,玩家需将道具移动到正确的位置,然后点击鼠标放置。

5、“异形的滑轨拖动”应当如何实现?
举例而言,玩家可以点选长按一个场景元件,将其在一个“S”形的轨道上拖动。
松开按钮时,场景元件会判定自身是否位于“触发点”范围内。
如处于触发点,则场景元件微调移动至触发点正中,而后触发剧情。
如不处于触发点,则场景元件会沿着S形的轨道移动回初始位置。


烦请各位帮忙解答了……
回复

使用道具 举报

16

主题

1009

帖子

0

精华

管理员

Rank: 9Rank: 9Rank: 9

积分
1030
发表于 2020-8-7 23:23:48 | 显示全部楼层
一、大概看了下,基本上要写好看,都是需要至少有那么几年程序开发经验的人才能写的东西,如果想要自己写建议先学一下TJS语言,当然更建议直接找人来写。
二、请尽量按照一个问题一个帖的方式来提问,方便搜索。
三、提问时请说明“对引擎/TJS的使用已经了解到了什么程度,构思了什么样的制作方法,具体到了哪一步卡住了不会做/写了什么出错了”,而不是“XX系统如何实现”。
因为看起来不知道具体哪步不会,而且看起来特别简单的步骤和特别复杂的步骤都混在一起,只能简单地描述一下思路:

1、新增按钮:
(1)对话中随时可以查看,不进行跳转的情况(如逆转平时剧情中的道具/人物资料)。
使用sysbutton,参考修改macro_ui.ks的系统按钮宏。使用kag.callExtraConductor('文件名.ks', '*标签名')进入界面,界面退出时使用返回。
具体追加界面可以参考道具系统范例。
(2)要求还能进行剧情跳转的情况,
使用普通的button或地图系统(如逆转进入调查场景或者质询场景的情况)。界面退出时必须跳转到原来的标签或其他标签。

如果是XXX则XXX,如果是YYY则YYY,简单的条件分歧,看完教程就明白了。
所有非自定义层的“滑动”,均为action指令。

KR的滚轮事件非常不好用,要使用需要在MainWindow里面加hook。
简单的说就是每加一个滚轮操作都得在:function onMouseWheel(shift, delta, x, y)这个里面加一些处理。
然后用很多变量去控制当前处在哪个界面。
如果仅仅使用滚动条操作会少很多这样的麻烦。

怎么批量描绘变化的数据同样参考道具系统范例。

2、使用地图系统。需要点击的地方都做成按钮就可以了。目前kr有一个缺陷是如果按下键盘上的方向键,会自动选中按钮,可能会导致减少搜查乐趣,
因此如果特别想要让玩家不知道点哪里的效果,可以不用按钮而改用Layer的onMouseDown,然后根据收到的鼠标位置判断跳转去什么剧情(会很蛋疼)。
又:游戏内置两种对话框dia和scr,需要别样式对话框,根据情况打开macro_dia.ks按照这两个的格式自行修改参数增加新的宏指令即可。

3、和“滑动”一样,“推入”只是一个移动特效,把按钮定义到正确的层上,然后使用action指令移动层即可。

4、简单说就是有个layer用来接收鼠标按下onMouseDown和抬起onMouseUp以及移动onMouseMove,
这些是kr内建layer已经实现的功能,但如果想要做得精细比如不让拖出范围,放手会弹回去什么的,
一般来说需要写一个单独的类,继承自Layer这个引擎自带的基类。
比如NVLMaker的界面编辑器就用了大量类似的层来做拖拽,文件名叫class_uilayer,如果找不到更好的范例也可以直接下载源代码查看……
写完class以后创建一个对象,把这个“能被拖拽的层”指定一个parent层,它就会被加到画面上了。

5、感觉上类似,需要两个class,接收鼠标信号的layer(原件的parent)和原件layer,使用4类似的layer接收鼠标移动信号,根据信号设置元件的X,
这个元件收到改变X,会根据它当前的X自动调整到预先设定的Y坐标。如果没有则再把位置设为原来记录的坐标。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|nvlmaker

GMT+8, 2024-7-24 02:01 , Processed in 0.008641 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表