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

Project1

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

[有事请教] 自制随机刷新PickUps(地图拾取道具)的实现问题

[复制链接]

Lv1.梦旅人

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

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

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

x
本帖最后由 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
       
        我的预期是,每次循环后,道具的位置都会所有不同,
        想请教一下各位,不知道我的实现问题出在哪里?应该如何修改合适?

Lv1.梦旅人

梦石
0
星屑
193
在线时间
24 小时
注册时间
2023-9-2
帖子
24
2
 楼主| 发表于 2023-9-8 21:06:18 | 只看该作者
抱歉,我脑瘫了,因为我之前代码中有一个步骤是强行重置所有地图事件到初始值,
在把我这段逻辑放到重置之后执行就OK了,

再次抱歉,占用了大家时间。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
3
发表于 2023-9-9 02:48:01 | 只看该作者
taoyihong 发表于 2023-9-8 21:06
抱歉,我脑瘫了,因为我之前代码中有一个步骤是强行重置所有地图事件到初始值,
在把我这段逻辑放到重置之 ...

大佬,我想知道这个强制重置的脚本在哪里,或者具体长什么样(原代码就行,我貌似刚好需要这个),谢谢了。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
帖子
821
4
发表于 2023-9-9 09:38:32 | 只看该作者
你那个rndSpawnPointsBaseNum是在哪定义的?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
193
在线时间
24 小时
注册时间
2023-9-2
帖子
24
5
 楼主| 发表于 2023-9-9 09:39:08 | 只看该作者
  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,因为我项目里用这个开关控制所有敌人的死亡状态,
你可以根据你项目的需要改动这块
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
193
在线时间
24 小时
注册时间
2023-9-2
帖子
24
6
 楼主| 发表于 2023-9-9 09:43:50 | 只看该作者
@RyanYe
rndSpawnPointsBaseNum是我加的方法,通过输入regionId和spawnNum来获取一定数量的,region内的随机坐标
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 04:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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