Project1

标题: 自制随机刷新PickUps(地图拾取道具)的实现问题 [打印本页]

作者: taoyihong    时间: 2023-9-8 17:22
标题: 自制随机刷新PickUps(地图拾取道具)的实现问题
本帖最后由 taoyihong 于 2023-9-8 17:26 编辑

Hi, 各位RM开发者,

        小弟正在通过JS实现一个随机刷新PickUps(地图拾取道具)的功能,
        目前的实现方式如下:

  1.     for(var i = 0; i < hpPickUpsNum; i++){
  2.         var eventName = "Event" + i
  3.         events[eventName] = new Game_Event($gameMap._mapId, pickUpEvent._eventId);      
  4.         events[eventName].event().x = rndSpawnPointsBaseNum[i].x;
  5.         events[eventName].event().y = rndSpawnPointsBaseNum[i].y;
  6.         $gameMap._events.push(events[eventName]);
  7.     }
  8.        
复制代码


        但最后刷新出来的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
  1. //重置当前地图内所有事件------------------------------------------
  2. function resetCurrentMapAll(){

  3.     var events = $gameMap.events();

  4.     // 循环遍历事件列表,重置每个事件的状态
  5.     for (var i = 0; i < events.length; i++) {

  6.         var event = events[i];
  7.         var id = event.event().id
  8.       
  9.         // 重置位置
  10.         var originalX = $dataMap.events[id].x;  // 获取事件在编辑器中的初始 X 坐标
  11.         var originalY = $dataMap.events[id].y;  // 获取事件在编辑器中的初始 Y 坐标
  12.         var originalDir = $dataMap.events[id].pages[0].image.direction; // 获取事件在编辑器中的初始朝向

  13.         event.setPosition(originalX, originalY);  // 设置事件位置初始坐标
  14.         event.setDirection(originalDir);// 设置事件位置初始朝向
  15.         
  16.         // 其他重置操作,比如重置变量等
  17.         var selfSwitchKey = [$gameMap._mapId, event.event().id, 'A'];
  18.         $gameSelfSwitches.setValue(selfSwitchKey, false);
  19.     }
  20.    
  21. }
复制代码


@任小雪,代码我贴在这边了,要注意的是,开关部分,我仅仅重置了独立开关A,因为我项目里用这个开关控制所有敌人的死亡状态,
你可以根据你项目的需要改动这块
作者: taoyihong    时间: 2023-9-9 09:43
@RyanYe
rndSpawnPointsBaseNum是我加的方法,通过输入regionId和spawnNum来获取一定数量的,region内的随机坐标




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