赞 | 55 |
VIP | 0 |
好人卡 | 0 |
积分 | 0 |
经验 | 0 |
最后登录 | 2024-9-11 |
在线时间 | 701 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 26
- 在线时间
- 701 小时
- 注册时间
- 2021-3-24
- 帖子
- 549
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 清澈淌漾 于 2021-6-29 16:30 编辑
MV开发时 总会遇到那种空气事件的演出,一个NPC站老远 然后走到一个地方通过空气事件去触发NPC
事件多就很烦
于是经过我2分钟溯源 搞了一种解决办法
事件在备注内写下 该事件的接触范围 主要拿的值是冒号后面的数值 前面你想叫什么叫什么
以下是核心代码
原版
Game_Map.prototype.eventsXy = function(x, y) {
return this.events().filter(function(event) {
return event.pos(x, y);
});
};
修改后
Game_Map.prototype.eventsXy = function(x, y) {
return this.events().filter(function(event) {
let s=$dataMap.events[event._eventId].note.split("limr:")
if(s.length>1)
{return (Math.abs(event._realX-x)<s[1])&&(Math.abs(event._realY-y)<s[1])}
else return event.pos(x, y);
});
};
角色每次移动都会遍历地图内所有事件 传递自己坐标
源码是 通过event.pos(x, y)返回坐标x y完全一致的事件。
修改后 在遍历后把事件备注拿到
截出范围值 走一个x y绝对值判断
注意 事件优先级 玩家下方与玩家相同有两种不同的结果
如果是与玩家相同建议用障碍把事件围起来
如果是在玩家下方建议拿障碍把事件埋上 |
|