查看: 8092|回复: 13

[有事请教] 【已解决】秘密通道怎么隐藏在地图中?

[复制链接]
梦石
0
星屑
131
在线时间
18 小时
注册时间
2021-1-23
回帖
19
发表于 2021-1-29 14:10:26 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 kenlis 于 2021-2-1 18:18 编辑

如何在游戏过程中不转场,不跳越去实现地图隐藏的秘密通道?就是等玩家不经意走进去才会在场景中出现隐藏通道。

如图实例
2123312121.png
梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-1-29 14:58:46 | 显示全部楼层
本帖最后由 alexncf125 于 2021-1-29 22:28 编辑

转场到这地图时贴张全黑的图片覆盖要隐藏格子
p.s.转场方式: 淡入(等待)->显图->转场(无)->淡出(等待)

弄个並行事件判定人物位置
踏入时消除图片
踏出时再显示图片

转场到別的地图时也要消除图片喔~

p.s.如果是大地图的话, 这方法就没用了, 因为图片不会固定在地图上~

补充:那被隐藏的通道的通行度得另外想方法喔

或许用楼下提供的插件会更好~
回复

使用道具 举报

梦石
0
星屑
131
在线时间
18 小时
注册时间
2021-1-23
回帖
19
 楼主| 发表于 2021-1-29 15:38:54 | 显示全部楼层
alexncf125 发表于 2021-1-29 14:58
转场到这地图时贴张全黑的图片覆盖要隐藏格子
p.s.转场方式: 淡入(等待)->显图->转场(无)->淡出(等待)

感谢大佬!我晚上回去试一下!!!
回复

使用道具 举报

梦石
0
星屑
16261
在线时间
4014 小时
注册时间
2015-9-14
回帖
1322

开拓者

发表于 2021-1-29 20:23:17 | 显示全部楼层
用Mr. Trivel:MrTS_DarkRoomCovers.js
踏足該區域顯示特定區域ID的圖塊,或隱藏特定區域ID的圖塊.

MrTS_DarkRoomCovers.js/=============================================================================
// MrTS_DarkRoomCovers.js
//=============================================================================

/*:
* @plugindesc Hides or reveals regions.
* @author Mr. Trivel
*
* @param Tile Size
* @desc How big are map tiles? X Y
* Default: 48 48
* @default 48 48
*
* @help
* --------------------------------------------------------------------------------
* Terms of Use
* --------------------------------------------------------------------------------
* Don't remove the header or claim that you wrote this plugin.
* Credit Mr. Trivel if using this plugin in your project.
* Free for commercial and non-commercial projects.
* --------------------------------------------------------------------------------
* Version 1.1
* --------------------------------------------------------------------------------
*
* --------------------------------------------------------------------------------
* Map Property Tags
* --------------------------------------------------------------------------------
*
* --------------------------------------------------------------------------------
*
* --------------------------------------------------------------------------------
* Plugin Commands
* --------------------------------------------------------------------------------
* RegionReveal [ID] - Reveals tiles of specific region
* RegionHide [ID] - Hides tiles of specific region
* RegionReset - Resets all open regions
* --------------------------------------------------------------------------------
*
* --------------------------------------------------------------------------------
* Version History
* --------------------------------------------------------------------------------
* 1.1 - Performance issues fixed, code cleanup
* 1.0 - Release
*/

(function() {
        var parameters = PluginManager.parameters('MrTS_DarkRoomCovers');
        var paramTileSize = String(parameters['Tile Size'] || "48 48").split(' ');
        var tileSizeX = Number(paramTileSize[0]);
        var tileSizeY = Number(paramTileSize[1]);

        //--------------------------------------------------------------------------
        // Game_Interpreter
        //
      
        var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
        Game_Interpreter.prototype.pluginCommand = function(command, args) {
                _Game_Interpreter_pluginCommand.call(this, command, args);
                if (command.toLowerCase() === "regionreveal") {
                        $gameMap.addToCurrentlyOpenRegions(Number(args[0]));
                } else if (command.toLowerCase() === "regionhide") {
                        $gameMap.removeFromCurrentlyOpenRegions(Number(args[0]));
                } else if (command.toLowerCase() === "regionreset") {
                        $gameMap.resetCurrentlyOpenRegions();
                }
        };

        //----------------------------------------------------------------------------
        // Game_Map
        //
      
        // currentlyOpenRegions
        Game_Map.prototype.currentlyOpenRegions = function() {
                if (!this._openRegionIds) this._openRegionIds = [0];
                return this._openRegionIds;
        };

        Game_Map.prototype.addToCurrentlyOpenRegions = function(id) {
                if (!this._openRegionIds) this._openRegionIds = [0];
                if (!this._openRegionIds.contains(id)) this._openRegionIds.push(id);
        };

        Game_Map.prototype.removeFromCurrentlyOpenRegions = function(id) {
                if (!this._openRegionIds) return;
                this._openRegionIds.splice(this._openRegionIds.indexOf(id), 1);
        };

        Game_Map.prototype.resetCurrentlyOpenRegions = function() {
                this._openRegionIds = [0];
        };

        //----------------------------------------------------------------------------
        // Scene_Map
        //

        var _SceneMap_createDisplayObjects = Scene_Map.prototype.createDisplayObjects;
        Scene_Map.prototype.createDisplayObjects = function() {
                _SceneMap_createDisplayObjects.call(this);
                this.createDarkCover();
        };

        Scene_Map.prototype.createDarkCover = function() {
                this._darkCover = new Spriteset_DarkCover();
                this._spriteset.addChild(this._darkCover);
        };

        //--------------------------------------------------------------------------
        // Spriteset_DarkCover
        //
        // Covers regions with dark dark darkness.
      
        function Spriteset_DarkCover() {
                this.initialize.apply(this, arguments);      
        };
      
        Spriteset_DarkCover.prototype = Object.create(Sprite.prototype);
        Spriteset_DarkCover.prototype.constructor = Spriteset_DarkCover;
      
        Spriteset_DarkCover.prototype.initialize = function() {
                Sprite.prototype.initialize.call(this);
                this.setFrame(0, 0, Graphics.width, Graphics.height);
                this._tone = [0, 0, 0, 0];
                this.opaque = true;
                this._darkCovers = [];
                this._displayX = 0;
                this._displayY = 0;
                this._regions = $gameMap.currentlyOpenRegions().clone();
                this.createDarkCovers();
                this.update();
        };

        Spriteset_DarkCover.prototype.createDarkCovers = function() {
                var bitmap = new Bitmap(tileSizeX, tileSizeY);
                bitmap.fillAll('#000000');
                for (var j = -1; j < Math.ceil(Graphics.boxHeight/tileSizeY)+2; j++) {
                        this._darkCovers.push([]);
                        for (var i = -1; i < Math.ceil(Graphics.boxWidth/tileSizeX)+2; i++) {
                                var cover = new Sprite(bitmap);
                                cover.x = i * tileSizeX;
                                cover.y = j * tileSizeY;
                                var regionId = $gameMap.regionId(i+this._displayX, j+this._displayY);
                                cover.visible = !(this._regions.contains(regionId));
                                this._darkCovers[j+1].push(cover);
                                this.addChild(cover);
                        }
                }
        };

        Spriteset_DarkCover.prototype.update = function() {
                Sprite.prototype.update.call(this);
                this.x = (-$gameMap.displayX() + Math.floor($gameMap.displayX())) * tileSizeX;
                this.y = (-$gameMap.displayY() + Math.floor($gameMap.displayY())) * tileSizeY;
                if (Math.floor($gameMap.displayX()) !== this._displayX ||
                        Math.floor($gameMap.displayY()) !== this._displayY ||
                        !$gameMap.currentlyOpenRegions().equals(this._regions))
                {
                        this._displayX = Math.floor($gameMap.displayX());
                        this._displayY = Math.floor($gameMap.displayY());
                        this._regions = $gameMap.currentlyOpenRegions().clone();
                        for (var j = -1; j < Math.ceil(Graphics.boxHeight/tileSizeY)+2; j++) {
                                for (var i = -1; i < Math.ceil(Graphics.boxWidth/tileSizeX)+2; i++) {
                                        var regionId = $gameMap.regionId(i+this._displayX, j+this._displayY);
                                        this._darkCovers[j+1][i+1].visible = !(this._regions.contains(regionId));
                                }
                        }
                }
        };
})();
https://rpg.blue/data/attachment/album/202003/28/021323lltgrsvfytfwuya5.gif
回复

使用道具 举报

梦石
0
星屑
131
在线时间
18 小时
注册时间
2021-1-23
回帖
19
 楼主| 发表于 2021-2-1 01:47:57 | 显示全部楼层
wabcmcc 发表于 2021-1-29 20:23
用Mr. Trivel:MrTS_DarkRoomCovers.js
踏足該區域顯示特定區域ID的圖塊,或隱藏特定區域ID的圖塊.

哇!!!!感谢大佬!!!方便多了!!!!
回复

使用道具 举报

梦石
0
星屑
1117
在线时间
238 小时
注册时间
2019-7-27
回帖
15
发表于 2021-2-1 07:27:11 | 显示全部楼层
小优的这个地图区域编辑插件 https://rpg.blue/thread-398744-1-1.html

评分

参与人数 1赞 +1 收起 理由
kenlis + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
131
在线时间
18 小时
注册时间
2021-1-23
回帖
19
 楼主| 发表于 2021-2-1 10:24:49 | 显示全部楼层
OOO三蛋 发表于 2021-2-1 07:27
小优的这个地图区域编辑插件 https://rpg.blue/thread-398744-1-1.html

这个好!!!简易易懂!!果然是最优的新手选择!!感恩!!!
回复

使用道具 举报

梦石
0
星屑
1117
在线时间
238 小时
注册时间
2019-7-27
回帖
15
发表于 2021-2-1 11:06:48 | 显示全部楼层
kenlis 发表于 2021-2-1 10:24
这个好!!!简易易懂!!果然是最优的新手选择!!感恩!!!

而且功能很强大 比如这种 然后可以侧面直接设置通行度走过去 也可以设成在墙下走
123.gif
回复

使用道具 举报

梦石
0
星屑
131
在线时间
18 小时
注册时间
2021-1-23
回帖
19
 楼主| 发表于 2021-2-1 12:01:50 | 显示全部楼层
OOO三蛋 发表于 2021-2-1 11:06
而且功能很强大 比如这种 然后可以侧面直接设置通行度走过去 也可以设成在墙下走  ...

效果超棒!!!完全是我想要的!爱你!!!
回复

使用道具 举报

梦石
0
星屑
1117
在线时间
238 小时
注册时间
2019-7-27
回帖
15
发表于 2021-2-1 14:49:36 | 显示全部楼层
kenlis 发表于 2021-2-1 12:01
效果超棒!!!完全是我想要的!爱你!!!

然而我现在转mz 用不了这个了 侧面在墙下走只能用事件在上面放假墙图片了 麻烦的很
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部