设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1395|回复: 15
打印 上一主题 下一主题

[有事请教] 怎样实现到达特定区域就会触发事件?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
24
在线时间
19 小时
注册时间
2023-8-15
帖子
9
跳转到指定楼层
1
发表于 2023-8-20 17:33:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
就是点击一片区域的格子,会触发相同的一个事件,目前我只会做到点击事件所在位置的那个点触发,
是不是需要使用地图R里的那些数字编号来设置特定区域?试了一下还是不会用
新手一个,所以问这么蠢的问题

Lv3.寻梦者

梦石
0
星屑
3239
在线时间
449 小时
注册时间
2022-1-21
帖子
227
16
发表于 2023-8-21 11:28:23 | 只看该作者
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
26
在线时间
701 小时
注册时间
2021-3-24
帖子
549
15
发表于 2023-8-21 00:07:28 | 只看该作者
铺空气事件

    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);
        });
    };

而我做到这种需求会扩大一个事件的触碰范围
全家活光光~
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36402
在线时间
10791 小时
注册时间
2009-3-15
帖子
4813
14
发表于 2023-8-20 23:36:21 | 只看该作者
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
24
在线时间
19 小时
注册时间
2023-8-15
帖子
9
13
 楼主| 发表于 2023-8-20 21:14:54 | 只看该作者
bleen 发表于 2023-8-20 21:04
比较简单的一个方案应该是在区域id的判断下面再加一层条件判断(选择脚本)

如果:TouchInput.isTriggered ...

设置成功了,非常感谢!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1896
在线时间
603 小时
注册时间
2022-7-5
帖子
108
12
发表于 2023-8-20 21:04:07 | 只看该作者
比较简单的一个方案应该是在区域id的判断下面再加一层条件判断(选择脚本)

如果:TouchInput.isTriggered()

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

先看看能不能满足你的期望
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
24
在线时间
19 小时
注册时间
2023-8-15
帖子
9
11
 楼主| 发表于 2023-8-20 20:55:46 | 只看该作者
shiroin 发表于 2023-8-20 20:24
截个事件页的图给我看看

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

◆变量操作:#0001 玩家x = 玩家 的 地图 X
◆变量操作:#0002 玩家Y = 玩家 的 地图 Y
◆获取指定位置的信息:区域id, 区域 ID, ({玩家x},{玩家Y})
◆如果:区域id = 7
  ◆开关操作:#0001 窗户 = ON
  ◆
:结束
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
24
在线时间
19 小时
注册时间
2023-8-15
帖子
9
10
 楼主| 发表于 2023-8-20 20:51:43 | 只看该作者
bleen 发表于 2023-8-20 20:23
有些地方我没搞清楚。  看上去要求是这三个 1) 在区域内  2) 要点击才能触发   3)点击的结果是触发事件
...

1)所有的格子都可以触发
2)在远处就能点击
3)鼠标左键
4)是通过变量操作设置玩家X Y坐标,获取区域ID信息,然后通过条件分歧判断玩家是否在改区域内,这样只能实现触碰到该区域时即触发
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5425
在线时间
1228 小时
注册时间
2016-12-6
帖子
389
9
发表于 2023-8-20 20:24:01 | 只看该作者
BAIZHOU 发表于 2023-8-20 19:50
试了一下不行,触发条件选并行处理才行

截个事件页的图给我看看
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1896
在线时间
603 小时
注册时间
2022-7-5
帖子
108
8
发表于 2023-8-20 20:23:34 | 只看该作者
有些地方我没搞清楚。  看上去要求是这三个 1) 在区域内  2) 要点击才能触发   3)点击的结果是触发事件

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

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

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 10:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表