Project1
标题:
想了很久,构思不出传送卷该如何制作...
[打印本页]
作者:
gxlmx2
时间:
2022-11-11 16:46
标题:
想了很久,构思不出传送卷该如何制作...
制作的游戏有一张世界地图,除了船和飞空艇,想添加一个传送卷,可往返曾经去过的任何城镇,
使用传送卷,公共事件打开世界地图,遇到问题:各个城镇的图标怎么在地图上标示出来,使其可以点击?涉及到城镇点的坐标构思不出来,
请求大佬说一下实现的方法,解疑请尽量用图形脚本能实现的方式,复杂的代码不会写...
作者:
火锅深处
时间:
2022-11-11 19:45
https://galvs-scripts.com/2017/08/25/mv-map-travel/
如上,貌似我看过的类似的都是单独左边拉个选项栏,然后玩家光标移动到选项的时候摄像头对准目标地点图标,直接点地图上的图标的确实没找到。
想法2就是你打开卷轴的直接让玩家地图移动到大地图,然后玩家设置成透明。至于图标部分,就全地图都用远景地图表示,图块设置成透明。这样点击大地图上的地点的时候实际效果是玩家走过去进行地点穿越,但是因为玩家是透明的所以看起来就像点击图标触发效果(大概
作者:
bleen
时间:
2022-11-11 22:49
以下纯属脑海里想的,没有实际操作过,就当抛砖引玉,看有没有帮助。(实在没时间验证全部)
顺着你的思路来说,怎么让地图可以点击呢,用图片公共事件插件,比如YEP_PictureCommonEvents,道具绑定的公共事件是显示地图图片,然后这个图片利用插件又绑定一个传送的公共事件。(有点套娃,但到这一步为止我试了一下,可以实现。)
但是这里有个问题,它是整张图片响应的,没办法做到点击地图上的某个点传送到不同的地点。
为了解决这个问题有两个思路:
一个是拼图式模拟世界地图,把完整的地图分割成很多张图片,重点是能够点击的点都是单独的图片,然后用显示图片命令把这些图片全部显示出来,调整每一张图片的坐标,无缝衔接,整体看上去是一个地图,但只有城镇图标的那个图片绑定了传送公共事件,其他图片不绑定,点了不会有反应。
第二个方法是可以用脚本获取鼠标点击的坐标,作为传送事件的条件判断,当鼠标点击的位置符合条件时才执行传送,有几个传送点就写几个分支条件。
这里我就没实际测试过了,还有一些细节要处理,比如要鼠标悬停在城镇图标要高亮或者获取坐标不可行的话,可能还要多一个鼠标拓展插件,还有在世界地图点的时候可能要禁止玩家移动,触发传送或者放弃传送时还要消除图片返回物品栏或者地图,要不要点击传送的时候增加二次确认窗口......
作者:
Shirakawa_Yuui
时间:
2022-11-12 09:01
用大地图可行不?
作者:
darkmoon2022
时间:
2022-11-12 10:59
很简单啊,物品卷轴,使用事件,点击物品出现,曾经去过的城镇名,每个城镇名,选择,下面是坐标移动。菜单里都有,用心找一下,很简单能实现。
作者:
gxlmx2
时间:
2022-11-25 14:59
解决了,多谢2楼的思路,
我的方法是PS出一张世界地图的图片,然后MV里新建一张新的地图,用透明格子填充整张地图,
地图的远景图像指定为PS的图片,角色开透明并4倍速,通过点击地图的事件实现传送的效果,
难在调试PS的图片大小要和地图尺寸吻合,不然效果不好,吻合的很好的话就是类似点哪传送到哪的感觉,目的达到。
作者:
wei73692lei
时间:
2022-11-26 20:06
https://www.jianshu.com/p/42f3e4865941?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation希望对你有所帮助 虽然我也不懂
作者:
SailCat
时间:
2022-11-27 10:21
本帖最后由 SailCat 于 2022-11-27 10:27 编辑
这东西我以前用XP做过,纯事件,适用于可访问地点数不到48的游戏
前置要求:
1. 世界地图制作完成后,导出一张图片,假设你的世界地图是256x256的大小(MV最大好像只有这么大),那么可以让世界地图显示为512x512,每个像素对应世界地图的2个单位,这一步只要让世界地图不要超过MV显示的大小就行了。
此处可以计算出,世界地图如果居中显示,应该是从((816-512)/2,(624-512)/2)的左上坐标(102,56)处开始显示,不过我个人更建议直接将图片做成816x624的大小,该透明透明该加框加框,自己记住地图的左上角坐标是哪个点(x, y)就行了。
2. 世界地图上,用连续的n个事件(n<48)表示可以进入的城镇,然后用连续的n个变量来记录这些城镇的到访信息,这里假设事件编号是a, a+1...a+n-1,预留的变量编号是b, b+1...b+n-1,注意,一定要连续!!!
每次进入城镇时,在场所移动前,都执行一个公共事件:
变量操作:[上次进入] = b+this.id-a
条件分歧:$gameVariables[$[gameVariables[上次进入]] == 0
脚本:$gameVariables[$[gameVariables[上次进入]] = ($gamePlayer.x << 9) + $gamePlayer.y + 1
分歧结束
这样一旦进入过某个城镇,对应的预留变量的值就会记录下这个城镇在世界地图上的坐标(我不清楚MV里面取本事件ID是不是用this.id啊,清楚的确认一下)。没有进入的话,变量的值就是默认的0。而变量“上次进入”会记录你上次进了哪个城镇。
3. 制作一个“光标”图标和一个“城镇”图标,这些素材连同1中的世界地图都放在Pictures文件夹里
开始制作:
传送卷挂接公共事件(以下脚本是ruby转js,如有不符语法之处自行调整)
注释:初始化显示界面
显示图片:世界地图 #1
@
(102, 56) 左上 100% 不透明
变量操作:[当前城镇编号]=b
循环
条件分歧:脚本:$gameVariables[$gameVariables[当前城镇编号]] > 0
注释:访问过城镇的情况下
变量操作:[城镇 X 坐标] = (($gameVariables[$gameVariables[当前城镇编号]] - 1) >> 9)
变量操作:[城镇 Y 坐标] = (($gameVariables[$gameVariables[当前城镇编号]] - 1) & 511)
变量操作:[屏幕 X 坐标] = $gameVariables[城镇 X 坐标] * 2 + 102
变量操作:[屏幕 Y 坐标] = $gameVariables[城镇 Y 坐标] * 2 + 56
显示图片:城镇 #当前城镇编号-b+2 @(屏幕X坐标, 屏幕Y坐标) 左上 100% 不透明 //这里其实是要转换成脚本来操作的,因为要用变量值来指定图片编号,但我对MV脚本不熟悉,就仿写成了事件的形式
分歧结束
变量操作:[当前城镇编号] += 1
条件分歧:[当前城镇编号] = b + n
中断循环
分歧结束
以上反复
显示图片:光标 #50 @(0, 0) 左上 100% 透明
注释:指向性选择操作
开关操作:[移动位置] = ON
变量操作:[当前城镇编号]=[上次进入]
循环
条件分歧:开关:[移动位置] == ON
变量操作:[城镇 X 坐标] = (($gameVariables[$gameVariables[当前城镇编号]] - 1) >> 9)
变量操作:[城镇 Y 坐标] = (($gameVariables[$gameVariables[当前城镇编号]] - 1) & 511)
变量操作:[屏幕 X 坐标] = $gameVariables[城镇 X 坐标] * 2 + 107
变量操作:[屏幕 Y 坐标] = $gameVariables[城镇 Y 坐标] * 2 + 61
移动图片:#50 @(屏幕X坐标, 屏幕Y坐标) 左上 100% 不透明
开关操作:[移动位置] = OFF
分歧结束
条件分歧:当 上 被按下时
循环
变量操作:[当前城镇编号] -= 1
条件分歧:[当前城镇编号] == b-1
变量操作:[当前城镇编号] = b+n-1
分歧结束
条件分歧:$gameVariables[$gameVariables[当前城镇编号]] > 0
开关操作:[移动位置] = ON
中断循环
分歧结束
以上反复
分歧结束
条件分歧:当 下 被按下时
循环
变量操作:[当前城镇编号] += 1
条件分歧:[当前城镇编号] == b+n
变量操作:[当前城镇编号] = b
分歧结束
条件分歧:$gameVariables[$gameVariables[当前城镇编号]] > 0
开关操作:[移动位置] = ON
中断循环
分歧结束
以上反复
分歧结束
条件分歧:当 C 被按下时
场所移动:[世界地图ID][城镇 X 坐标][城镇 Y 坐标] 就这样 不淡出
跳转:事件结束
中断事件处理
分歧结束
条件分歧:当 B 被按下时
跳转:事件结束
分歧结束
等待 1 帧
以上反复
标签:事件结束
图片消失 #1
图片消失 #2
……
图片消失 #50
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1