Project1
标题:
自制随机刷新PickUps(地图拾取道具)的实现问题
[打印本页]
作者:
taoyihong
时间:
2023-9-8 17:22
标题:
自制随机刷新PickUps(地图拾取道具)的实现问题
本帖最后由 taoyihong 于 2023-9-8 17:26 编辑
Hi, 各位RM开发者,
小弟正在通过JS实现一个随机刷新PickUps(地图拾取道具)的功能,
目前的实现方式如下:
for(var i = 0; i < hpPickUpsNum; i++){
var eventName = "Event" + i
events[eventName] = new Game_Event($gameMap._mapId, pickUpEvent._eventId);
events[eventName].event().x = rndSpawnPointsBaseNum[i].x;
events[eventName].event().y = rndSpawnPointsBaseNum[i].y;
$gameMap._events.push(events[eventName]);
}
复制代码
但最后刷新出来的N个道具(根据hpPickUpsNum的值来随机数量),全都叠在了同一个位置上,
位置等于该循环最后一次得到的rndSpawnPointsBaseNum
,
我的预期是,每次循环后,道具的位置都会所有不同,
想请教一下各位,不知道我的实现问题出在哪里?应该如何修改合适?
作者:
taoyihong
时间:
2023-9-8 21:06
抱歉,我脑瘫了,因为我之前代码中有一个步骤是强行重置所有地图事件到初始值,
在把我这段逻辑放到重置之后执行就OK了,
再次抱歉,占用了大家时间。
作者:
任小雪
时间:
2023-9-9 02:48
taoyihong 发表于 2023-9-8 21:06
抱歉,我脑瘫了,因为我之前代码中有一个步骤是强行重置所有地图事件到初始值,
在把我这段逻辑放到重置之 ...
大佬,我想知道这个强制重置的脚本在哪里,或者具体长什么样(原代码就行,我貌似刚好需要这个),谢谢了。
作者:
RyanYe
时间:
2023-9-9 09:38
你那个rndSpawnPointsBaseNum是在哪定义的?
作者:
taoyihong
时间:
2023-9-9 09:39
//重置当前地图内所有事件------------------------------------------
function resetCurrentMapAll(){
var events = $gameMap.events();
// 循环遍历事件列表,重置每个事件的状态
for (var i = 0; i < events.length; i++) {
var event = events[i];
var id = event.event().id
// 重置位置
var originalX = $dataMap.events[id].x; // 获取事件在编辑器中的初始 X 坐标
var originalY = $dataMap.events[id].y; // 获取事件在编辑器中的初始 Y 坐标
var originalDir = $dataMap.events[id].pages[0].image.direction; // 获取事件在编辑器中的初始朝向
event.setPosition(originalX, originalY); // 设置事件位置初始坐标
event.setDirection(originalDir);// 设置事件位置初始朝向
// 其他重置操作,比如重置变量等
var selfSwitchKey = [$gameMap._mapId, event.event().id, 'A'];
$gameSelfSwitches.setValue(selfSwitchKey, false);
}
}
复制代码
@任小雪,代码我贴在这边了,要注意的是,开关部分,我仅仅重置了独立开关A,因为我项目里用这个开关控制所有敌人的死亡状态,
你可以根据你项目的需要改动这块
作者:
taoyihong
时间:
2023-9-9 09:43
@RyanYe
rndSpawnPointsBaseNum是我加的方法,通过输入regionId和spawnNum来获取一定数量的,region内的随机坐标
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1