RPGMZ游戏引擎事件技巧大全

个人记录保存

Project1论坛 小圈子 人才 不得学习技术

搜集了一些常用功能 以后不用翻源代码

Game_Event 逻辑功能在这里

Sprite_Character 图形显示在这里

判断是什么角色

javascript 复制代码
if (this._character instanceof Game_Event) {
    // 地图事件
} else if (this._character instanceof Game_Player) {
    // 玩家
} else if (this._character instanceof Game_Follower) {
    // 随从
}

地图角色事件获取

javascript 复制代码
$gameMap.event(5) //获取事件
$gamePlayer  //获取玩家
$gamePlayer.followers().follower(0) //获取随从
this.character() //当前事件 事件页内
$gameMap.character(id) // 通用(0=玩家,1~=事件)

遍历地图上所有的事件拿到事件本身 做自己想做的事情

javascript 复制代码
$gameMap.events().forEach(event => {
    // event = 当前循环到的 每一个事件
});

让地图上所有事件暂停不动弹 可以执行自己的代码功能然后在恢复所有事件运行

javascript 复制代码
//强制静止
$gameMap.events().forEach(ev => (ev._oldMoveType = ev._moveType, ev._moveType = 0));
javascript 复制代码
//恢复正常
$gameMap.events().forEach(ev => ev._oldMoveType && (ev._moveType = ev._oldMoveType, delete ev._oldMoveType));

让某个id的事件静止不动

javascript 复制代码
//事件会转向角色
$gameMap.event(5).lock();
//解除
$gameMap.event(5).unlock();


// 暂停 不转向
const ev = $gameMap.event(5);
ev._oldMoveType = ev._moveType;
ev._moveType = 0;

// 恢复
const ev = $gameMap.event(5);
if (ev._oldMoveType !== undefined) {
  ev._moveType = ev._oldMoveType;
  delete ev._oldMoveType;
}

判断地图某个事件是否存在

javascript 复制代码
//遍历所有事件
const hasEnemy = $gameMap.events().some(e=>e.event().name === "牛头军" && !e._erased);
if(hasEnemy ){

//存在
}else{
//不存在
}


//具体某个id的事件 没消失还存在
$gameMap.event(5) && !$gameMap.event(5)._erased

让某个事件彻底消失

javascript 复制代码
$gameMap.event(5).erase();

//恢复方法
$gameMap.event(5)._erased = false;
$gameMap.event(5).refresh();

移动某个事件 到指定位置

javascript 复制代码
$gameMap.event(4).locate(6, 2);

事件存在并且没有运行的事件页

javascript 复制代码
$gameMap.event(5) && $gameMap.event(5)._pageIndex < 0

让具体的某个事件播放动画

javascript 复制代码
$gameTemp.requestAnimation([$gameMap.event(5)], 1);

为事件添加自定义属性变量 逻辑数据

javascript 复制代码
const _Game_Event_initialize = Game_Event.prototype.initialize;
Game_Event.prototype.initialize = function(mapId, eventId) {
    _Game_Event_initialize.call(this, mapId, eventId);
    this._new_index = 0; //自定义的变量 后续可以获取到 自行操作
};

事件的图像

javascript 复制代码
    const _Sprite_Character_prototype_initialize = Sprite_Character.prototype.initialize;
    Sprite_Character.prototype.initialize = function(character) {
        _Sprite_Character_prototype_initialize.call(this, character);
        //character就是逻辑对象 Game_Event.prototype.initialize 定义的变量可以直接获取
        character._new_index = 1; 改编自定义值
    };

持续更新中。。。。。。

相关推荐
新*1 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
OpsEye2 小时前
别再挨个充会员了:多模型编码,最麻烦的从来不是选模型
javascript·ai编程
学以智用3 小时前
jsencrypt.js 完整详解
javascript
Hilaku6 小时前
你们公司有 35 岁以上的前端吗?
前端·javascript·程序员
鸿蒙开发6 小时前
小程序存档写到一半怎么办?双槽保存与损坏恢复实战
前端·javascript·react.js
知忆_IS7 小时前
TerriaMap 开发实战04:MVT数据自定义符号化 - terriajs源码修改
javascript·webgis·terriamap·terriajs
云上工程笔记9 小时前
SRT字幕一键转手绘动画:srt-whiteboard-animation的复刻实录
大数据·开发语言·javascript·人工智能·机器学习
FungLeo10 小时前
成为全栈·Vue管理后台篇·<scriptsetup>:把页面拆成可读、可测的 Vue 组件
前端·javascript·vue.js·typescript·前端组件化·composition api·vue sfc
清晨Coding1 天前
删了 Cookie 还能自动登录?Google系网站登录态自动恢复的原理分析
javascript
kyriewen1 天前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员