查看: 5774|回复: 12

[有事请教] 如何临时取消角色移动到鼠标点击处

[复制链接]
梦石
0
星屑
22578
在线时间
2605 小时
注册时间
2015-7-4
回帖
917
发表于 2018-9-16 17:18:22 | 显示全部楼层 |阅读模式

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

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

×
打算写个插件,地图上判断某个方块区域作为按钮,点击可以运行脚本,
但是当点击该按钮的时候不想角色移动过去,所以需要临时取消移动,
找了一天了,找不到临时取消移动的,永久禁止鼠标点击移动的却一大堆,
想用其它方法来代替却都有瑕疵:
用临时清除目的地 $gameTemp.clearDestination();
出现运行过后角色向按钮移动一格现象;
用强制设定目的地 $gameTemp.setDestination(this.actor.x, this.actor.y);
                            $gameTemp.setDestination(this.actor.x / 48, this.actor.y / 48);
都不对,运行过后角色一直向下走到地图边缘。
不知道各位大佬有没有比较好的解决方案,告知一二,不胜感激!
梦石
0
星屑
3074
在线时间
685 小时
注册时间
2018-6-1
回帖
253
发表于 2018-9-16 17:47:59 | 显示全部楼层
好像自带按钮类
回复

使用道具 举报

梦石
0
星屑
39699
在线时间
284 小时
注册时间
2018-7-27
回帖
362
发表于 2018-9-16 17:56:33 | 显示全部楼层
本帖最后由 Drill_up 于 2018-9-16 18:07 编辑

(*ˉ﹃ˉ)  直接把Game_Temp.prototype.setDestination函数重载(插件形式)。
这种方法,相当于,你点击鼠标前,就加了个你自己套用的条件,如果不满足你自己设置的条件,就按原来的方法走,满足,就按你自己的方法走。

var _Game_Temp_setDestination= Game_Temp.prototype.setDestination
Game_Temp.prototype.setDestination = function(x, y) {
        if( /*条件*/ ){
                //条件执行
        }else{
                _Game_Temp_setDestination.call(x, y);        //调用原函数setDestination
        }
};

点评

还是不行,关键是条件不会写,老是出错。  发表于 2018-9-16 22:49
非常感谢!突然感觉我这个牛角尖钻得好深哦。  发表于 2018-9-16 20:33
量子妹: 只要你愿意开始,什么时候出发都不晚。
回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2018-9-16 21:46:29 | 显示全部楼层
Scene_Map.prototype.isMapTouchOk = function() {
这里设置屏幕点击后是否移动
你在条件里加个判断就好了。
你判断当你的鼠标点击坐标在你那个区域内的时候,就不移动就好了

点评

这个function()引用初始脚本老是出错,再说判断条件我也不会写。  发表于 2018-9-16 22:51
回复

使用道具 举报

梦石
0
星屑
22578
在线时间
2605 小时
注册时间
2015-7-4
回帖
917
 楼主| 发表于 2018-9-16 22:54:43 | 显示全部楼层
感谢几位出手相助,其实用强制设定目标是最方便的,
$gameTemp.setDestination(this.actor.x, this.actor.y);
但是那个 y 值不知道怎么回事,总是不对,x方向是原地不动的,
就 y 方向一直向下跑,不知道有没人知道原因。

点评

太幸运了,终于给我找到了。$gameTemp.setDestination($gamePlayer.x+1,$gamePlayer.y); 不过理解不了一个 +1 一个不 +1 。  发表于 2018-9-16 23:42
回复

使用道具 举报

梦石
0
星屑
220
在线时间
45 小时
注册时间
2019-10-1
回帖
25
发表于 2021-6-5 11:18:29 | 显示全部楼层
Fan723 发表于 2018-9-16 22:54
感谢几位出手相助,其实用强制设定目标是最方便的,
$gameTemp.setDestination(this.actor.x, this.actor.y ...

感谢大佬三年前进行的探索,这个结论对我很有用

点评

哦!这个其实是有Bug的,该方法已弃用多年。  发表于 2021-6-5 11:41
回复

使用道具 举报

梦石
0
星屑
220
在线时间
45 小时
注册时间
2019-10-1
回帖
25
发表于 2021-6-6 20:08:54 | 显示全部楼层
Fan723 发表于 2018-9-16 22:54
感谢几位出手相助,其实用强制设定目标是最方便的,
$gameTemp.setDestination(this.actor.x, this.actor.y ...

有BUG啊……
那请问大佬有没有发现过新的办法来临时禁用鼠标点击呢

点评

重写这个方法吧,那时候年轻不懂事,调用该方法,以为设置坐标为当前位置就可以不动,后来看了别人重写方法成不执行,才发现自己是多么愚蠢。  发表于 2021-6-6 22:01
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部