Project1

标题: 人物立绘左右切换的问题 [打印本页]

作者: Rarian    时间: 2020-4-5 06:27
标题: 人物立绘左右切换的问题
我暂时没有用插件和脚本,直接是显示图片来展示人物的立绘,可是运行的时候发现当人物移动到地图的一侧的时候,会被立绘挡住看不见地图。
想请教一下有没有最好不用脚本或者插件就可以实现【当人物在左侧的时候,立绘显示到右边去,人物在右边的时候,立绘显示到左边去】
如果必须要用到脚本插件的话可以请求指点或指路么,谢谢
作者: shantianzu    时间: 2020-4-5 12:15
我觉得是先获得人物坐标,再对比画面坐标,公共事件判定这俩条件,不知道是否正确,只是我瞎猜的。

或者你设置一个按键,按一下显示,再按一下隐藏,比你这样要省事不少。
作者: Zeldashu    时间: 2020-4-5 20:33
现成这种在地图上显示立绘的插件一般都是大佬们自己写的,目前还没有发现有任何该功能的外流版本。所以基本不可能白敬到。
但有以下解决方法,也是一些游戏为了解决立绘遮挡问题而给出的:
1.按照楼上的方法来判定角色在屏幕上的位置,一旦进入立绘范围就执行改变立绘位置或透明的的命令。(缺点很明显,多层叠加的立绘一旦透明会出现透明问题,单张立绘倒是没什么所谓)
2.在地图边缘上额外预留出立绘大小的空白地带,这样就不会发生角色被立绘遮挡的情况。(缺点也很明显)

作者: Rarian    时间: 2020-4-5 22:11
本帖最后由 Rarian 于 2020-4-5 22:30 编辑
shantianzu 发表于 2020-4-5 12:15
我觉得是先获得人物坐标,再对比画面坐标,公共事件判定这俩条件,不知道是否正确,只是我瞎猜的。

或者你 ...


人物的坐标倒还好解决,
问题就是如何获得【画面的坐标】

因为画面的x坐标从左到右为0-一千多不等的,假如我把立绘固定到左边还可以大概写出x小于10则透明的,
但是如果放到右边的话就很不好判定,有的地图大一点就x=1500有的x=1300

54416710.png (42.9 KB, 下载次数: 35)

54416710.png

9DEZAGHZ2@0C2(@OXPX$SXT.png (857.3 KB, 下载次数: 31)

9DEZAGHZ2@0C2(@OXPX$SXT.png

UVX$]QPHZIG~K2TIW~DI~HW.png (943.44 KB, 下载次数: 38)

UVX$]QPHZIG~K2TIW~DI~HW.png

作者: Rarian    时间: 2020-4-5 22:40
Zeldashu 发表于 2020-4-5 20:33
现成这种在地图上显示立绘的插件一般都是大佬们自己写的,目前还没有发现有任何该功能的外流版本。所以基本 ...

请问那个在地图边缘预留空白地带是指在特意在编辑地图属性的时候,把宽和高多设置出一些么
还有多层立绘出现的透明问题是指什么呢,图层顺序会变乱导致上下层显示的时候出现类似穿模的效果吗?
作者: soulsaga    时间: 2020-4-5 23:03
本帖最后由 soulsaga 于 2020-4-5 23:05 编辑

JAVASCRIPT 代码复制
  1. var ScreenX = Math.round($gameMap.adjustX($gamePlayer._x) * $gameMap.tileWidth() + $gameMap.tileWidth() / 2);
  2. var ScreenY = Math.round($gameMap.adjustY($gamePlayer._y) * $gameMap.tileHeight() + $gameMap.tileHeight());

求得玩家在画面中的坐标
作者: Rarian    时间: 2020-4-5 23:32
本帖最后由 Rarian 于 2020-4-6 02:07 编辑
soulsaga 发表于 2020-4-5 23:03
var ScreenX = Math.round($gameMap.adjustX($gamePlayer._x) * $gameMap.tileWidth() + $gameMap.tileWid ...


问题就在于如何判断角色在画面的位置是否接近边界

因为不同大小的地图的ScreenX的最高值是不一样的,想要预留空白的话,每张地图的需要判定的ScreenX值都不一样啊
作者: soulsaga    时间: 2020-4-6 10:19
本帖最后由 soulsaga 于 2020-4-6 10:24 编辑
Rarian 发表于 2020-4-5 23:32
问题就在于如何判断角色在画面的位置是否接近边界

因为不同大小的地图的ScreenX的最高值是不一样的,想 ...


这脚本和地图大小无关..只求出画面位置..
作者: shantianzu    时间: 2020-4-6 10:36
Rarian 发表于 2020-4-5 23:32
问题就在于如何判断角色在画面的位置是否接近边界

因为不同大小的地图的ScreenX的最高值是不一样的,想 ...

那你就这样:
你走到立绘的位置,看你走到那个位置会被立绘挡住。
然后用区域(R图块),从上到下标出立绘的位置。
然后公共事件判定当人物走到区域ID的时候,立绘变换位置。

也就是说在立绘刚好挡住人物的地方画区域,这样在你人物被挡住时正好在区域上并执行移动立绘的公共
事件,应该可以实现你的想法,没有试验,你可以自己试试。
作者: Rarian    时间: 2020-4-6 14:42
上面说的ScreenX值和“画面X”其实是一个数值,但是实测有效,已附效果图,谢谢各位了

不过话说,新人第一次发帖,不知道怎么把【有事请教】变成【已经解决】啊,还是说不可以变……?

B14J[@X176)}Z(XOD2(%TCY.png (44.04 KB, 下载次数: 38)

B14J[@X176)}Z(XOD2(%TCY.png

`0UC4Y9BE{8LOJAH(F4PJVK.png (1.45 MB, 下载次数: 37)

`0UC4Y9BE{8LOJAH(F4PJVK.png

CY9IOZZ5]11~PRJG0RMDG~C.png (1.46 MB, 下载次数: 34)

CY9IOZZ5]11~PRJG0RMDG~C.png

FJ80))%DN1LJ00$VU1X5PR5.png (47.52 KB, 下载次数: 35)

FJ80))%DN1LJ00$VU1X5PR5.png





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1