Project1

标题: 怎样实现到达特定区域就会触发事件? [打印本页]

作者: BAIZHOU    时间: 2023-8-20 17:33
标题: 怎样实现到达特定区域就会触发事件?
就是点击一片区域的格子,会触发相同的一个事件,目前我只会做到点击事件所在位置的那个点触发,
是不是需要使用地图R里的那些数字编号来设置特定区域?试了一下还是不会用
新手一个,所以问这么蠢的问题
作者: 余杭    时间: 2023-8-20 17:56
yep有插件,可以找找
作者: 动漫二次元    时间: 2023-8-20 18:13
区域ID                          
作者: BAIZHOU    时间: 2023-8-20 19:23
动漫二次元 发表于 2023-8-20 18:13
区域ID

我用变量和条件分歧已经实现进入该区域就触发事件了,怎样做到按键点击该区域的条件下触发事件呢
作者: shiroin    时间: 2023-8-20 19:35
BAIZHOU 发表于 2023-8-20 19:23
我用变量和条件分歧已经实现进入该区域就触发事件了,怎样做到按键点击该区域的条件下触发事件呢 ...

事件的优先级选【在人物下方】,触发条件选【确定键】,这样走进去不会直接触发事件,必须要主动点击或互动才能触发
作者: BAIZHOU    时间: 2023-8-20 19:50
shiroin 发表于 2023-8-20 19:35
事件的优先级选【在人物下方】,触发条件选【确定键】,这样走进去不会直接触发事件,必须要主动点击或互 ...

试了一下不行,触发条件选并行处理才行
作者: BAIZHOU    时间: 2023-8-20 20:01
余杭 发表于 2023-8-20 17:56
yep有插件,可以找找

是YEP_PictureCommonEvents这个插件吗,是的话图片ID在哪里找
作者: bleen    时间: 2023-8-20 20:23
有些地方我没搞清楚。  看上去要求是这三个 1) 在区域内  2) 要点击才能触发   3)点击的结果是触发事件

但是严谨一点的话,有疑问  1)你这个区域是否所有的格子都可以触发,还是有某些格子能点,某些点了没反应

2)你说的点击是要角色踩上去,还是不用踩上去,在远处就能点击

3)你说的点击姑且理解为是鼠标左键,但以防万一,还是问一下是否存在鼠标右键或者键盘某个键的触发

4)你说做到了点击某个点触发,有必要参考你目前是怎么实现的

作者: shiroin    时间: 2023-8-20 20:24
BAIZHOU 发表于 2023-8-20 19:50
试了一下不行,触发条件选并行处理才行

截个事件页的图给我看看
作者: BAIZHOU    时间: 2023-8-20 20:51
bleen 发表于 2023-8-20 20:23
有些地方我没搞清楚。  看上去要求是这三个 1) 在区域内  2) 要点击才能触发   3)点击的结果是触发事件
...

1)所有的格子都可以触发
2)在远处就能点击
3)鼠标左键
4)是通过变量操作设置玩家X Y坐标,获取区域ID信息,然后通过条件分歧判断玩家是否在改区域内,这样只能实现触碰到该区域时即触发
作者: BAIZHOU    时间: 2023-8-20 20:55
shiroin 发表于 2023-8-20 20:24
截个事件页的图给我看看

图片一直传不上去,我直接复制文本吧

◆变量操作:#0001 玩家x = 玩家 的 地图 X
◆变量操作:#0002 玩家Y = 玩家 的 地图 Y
◆获取指定位置的信息:区域id, 区域 ID, ({玩家x},{玩家Y})
◆如果:区域id = 7
  ◆开关操作:#0001 窗户 = ON
  ◆
:结束
作者: bleen    时间: 2023-8-20 21:04
比较简单的一个方案应该是在区域id的判断下面再加一层条件判断(选择脚本)

如果:TouchInput.isTriggered()

这是判断鼠标是否已经点击的脚本,在这个条件下再把开关打开。

先看看能不能满足你的期望
作者: BAIZHOU    时间: 2023-8-20 21:14
bleen 发表于 2023-8-20 21:04
比较简单的一个方案应该是在区域id的判断下面再加一层条件判断(选择脚本)

如果:TouchInput.isTriggered ...

设置成功了,非常感谢!
作者: soulsaga    时间: 2023-8-20 23:36
https://chimakier.notion.site/MV-131407acb3934a8b812aa7eb35e95692

可能读取得比较慢
作者: 清澈淌漾    时间: 2023-8-21 00:07
铺空气事件

    Game_Event.prototype.initialize = function(mapId, eventId) {
        Game_Character.prototype.initialize.call(this);
        this._mapId = mapId;
        this._eventId = eventId;
        let note =this.event().note
        let l1=note.indexOf('[#')
        let l2=note.indexOf('#]')
        if(l1>-1&&l2>l1) {
            let arr= note.substring(l1 + 2, l2).split("|")
            for (let i=0;i<arr.length;i++)
            {
                let n=arr[i].split(":")
                switch (n[0]) {
                    case "range":
                        this._range=n[1].split(",")
                        break
                }
            }
        }
        this.locate(this.event().x, this.event().y);
        this.refresh();
    };
   
    /**扩大事件碰撞*/
    Game_Map.prototype.eventsXy = function(x, y) {
        return this.events().filter(function(event) {
            if(event._range)
            {
                let r= event._pageIndex<event._range.length?event._range[event._pageIndex]:event._range[event._range.length-1]
                return (Math.abs(event._realX-x)<r)&&(Math.abs(event._realY-y)<r)}
            else return event.pos(x, y);
        });
    };

而我做到这种需求会扩大一个事件的触碰范围
作者: 动漫二次元    时间: 2023-8-21 11:28
https://mp.weixin.qq.com/s?__biz ... 942fc315143160ac#rd

你去看看这个




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