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 小时前
曼德勃罗集的 Three.js 实现
开发语言·javascript·ecmascript
m0_502724951 小时前
vue3生成pdf
前端·javascript·vue.js·pdf
Reload.1 小时前
CZ航司,shopping JS逆向 acw_sc__v2
开发语言·javascript·python·网络爬虫·ecmascript
天若有情6732 小时前
Superpowers 游戏引擎核心应用场景与落地指南
游戏引擎·superpowers
安妮的小熊呢2 小时前
CRMEB标准版v6.0: 商城DIY装修新升级,PS级自由设计!
运维·javascript·平面·信息可视化·小程序·开源软件
安生生申2 小时前
uni-app 连接 JDY-31 蓝牙串口模块实践
c语言·前端·javascript·stm32·单片机·嵌入式硬件·uni-app
winlife_2 小时前
嵌入式 MCP server vs 外挂桥接进程:引擎编辑器自动化的架构取舍
架构·自动化·编辑器·游戏引擎·架构设计·mcp·编辑器自动化
Liu.7742 小时前
Vue3结合Element Plus封装点击查看大图的自定义指令
javascript·vue.js·elementui
lqj_本人2 小时前
鸿蒙PC:electron-markdownify 从普通 Electron 迁移到 OpenHarmony Electron HAP 的完整实践
前端·javascript·electron