扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 168|回复: 0

[转载发布] 区域作为图层使用

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2024-11-27 10:08
  • 签到天数: 108 天

    连续签到: 4 天

    [LV.6]常住居民II

    2219

    主题

    376

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    9661
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    12284

    灌水之王

    发表于 2024-3-7 04:40:18 | 显示全部楼层 |阅读模式
    使用区域id作为额外的图片展示,具体代码如下
    JAVASCRIPT 代码
    1. /*:
    2. * @plugindesc 区域图层插件
    3. * @author 雪在燃
    4. * v:1.2
    5. * @help
    6. *  区域图层插件
    7. * 使用地图备注编写打开该功能(注,设置为任意都将打开功能,只有删除该行才会关闭功能)
    8. * 以下是一个事例
    9. *
    10. * 代表区域1会将img/system/pictures/light展示出来,并且不透明度为234(0~255,数字越低越不透明),z坐标为5(0~10,越高则越高,降低则会被主角或npc遮盖)
    11. */
    12. (function(){
    13.     var old = Spriteset_Map.prototype.createLowerLayer;
    14.     Spriteset_Map.prototype.createLowerLayer = function(){
    15.         old.call(this);
    16.         if($dataMap.meta.xzr_region){
    17.             this.createShadowEx();
    18.         }
    19.     };
    20.     Spriteset_Map.prototype.createShadowEx = function(){
    21.         var data = null;//JSON.parse($dataMap.mate.set_region);
    22.         for(var x = 0; x < $gameMap.width() ; x++){
    23.             for(var y = 0; y < $gameMap.height() ; y++){
    24.                 var id = $gameMap.regionId(x, y);
    25.                 if(id != 0){
    26.                     if($dataMap.meta["set_regionID_" + id]){
    27.                         data = JSON.parse($dataMap.meta["set_regionID_" + id]);
    28.                         var _sprite = new Sprite_Shadow(x, y, id, data);
    29.                         this._tilemap.addChild(_sprite);
    30.                     }
    31.                 }
    32.             }
    33.         }
    34.     }
    35.     function Sprite_Shadow(x, y, id){
    36.         this.initialize.apply(this, arguments);
    37.     }
    38.     Sprite_Shadow.prototype = Object.create(Sprite.prototype);
    39.     Sprite_Shadow.prototype.constructor = Sprite_Shadow;
    40.     Sprite_Shadow.prototype.initialize = function(x, y, id,data){
    41.         Sprite.prototype.initialize.call(this);
    42.         this.bitmap = (ImageManager.loadPicture(data[0]));
    43.         this.opacity = data[1];
    44.         this._dataZ = data[2];
    45.         this._cWidth = 0;
    46.         this._cHeight = 0;
    47.         this._realX = x;
    48.         this._realY = y;
    49.         this._isReady = false;
    50.         this.z = parseInt(id);
    51.     }
    52.     Sprite_Shadow.prototype.update = function(){
    53.         Sprite.prototype.update.call(this);
    54.         if(!this._isReady && ImageManager.isReady()){
    55.             this._cWidth = (this.bitmap.width - 48) / 2;
    56.             this._cHeight = (this.bitmap.height - 48) / 2;
    57.             this._isReady = true;
    58.         }
    59.         this.updatePosition();
    60.     }
    61.     Sprite_Shadow.prototype.updatePosition = function()
    62.     {
    63.         this.z = this._dataZ;
    64.         this.x = this.screenX();
    65.         this.y = this.screenY();
    66.     }
    67.     Sprite_Shadow.prototype.scrolledX = function(){
    68.         return $gameMap.adjustX(this._realX - 0.5);
    69.     };
    70.     Sprite_Shadow.prototype.scrolledY = function(){
    71.         return $gameMap.adjustY(this._realY - 1);
    72.     };
    73.     Sprite_Shadow.prototype.screenX = function(){
    74.         var tw = $gameMap.tileWidth();
    75.         return Math.round((this.scrolledX() * tw + tw / 2)-this._cWidth);
    76.     };
    77.     Sprite_Shadow.prototype.screenY = function(){
    78.         var th = $gameMap.tileHeight();
    79.         return Math.round((this.scrolledY() * th + th)-this._cHeight);
    80.     };
    81. })();
    复制代码

    初衷是作为光影脚本,如今并没有素材来实现这个功能wwww
    可以把图片作为图层插入到游戏里面,图片要是正方形,并且不能小于48*48,图片会以区域所在位置居中




    用它来实现影子是个不错的选择!光效勉勉强强应该也可以用它实现,不过需要一个圆形的渐变光图片作为素材,作为额外图层可以用来修饰地图!
    对窗户用简单的光源修饰后~



                 本帖来自P1论坛作者雪在燃,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=403790  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-1-16 06:01 , Processed in 0.069166 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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