查看: 88|回复: 0

[转载发布] 【MZ】【脚本教程】四行代码替换地图点击光标

[复制链接]
  • TA的每日心情
    开心
    2024-5-10 09:55
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元九百九十六年三月九日(春) | 显示全部楼层 |阅读模式
    地图点击光标的代码在 rmmz_sprites.js 中,Sprite_Destination 对象

    原始代码
    JAVASCRIPT 代码
    1. Sprite_Destination.prototype.createBitmap = function() {
    2.     //获取瓦片的宽和高,MZ默认是48*48
    3.     const tileWidth = $gameMap.tileWidth();
    4.     const tileHeight = $gameMap.tileHeight();
    5.     //创建一个BitMap,大小刚好覆盖一格
    6.     this.bitmap = new Bitmap(tileWidth, tileHeight);
    7.     //填充成白色
    8.     this.bitmap.fillAll("white");
    9.     //设置锚点
    10.     this.anchor.x = 0.5;
    11.     this.anchor.y = 0.5;
    12.     //设置混合模式,1=线性减淡,更好的写法是 this.blendMode = PIXI.BLEND_MODES.ADD;
    13.     this.blendMode = 1;
    14. };
    复制代码


    锚点是PIXI.js的属性,可以理解为以哪个点为中心,(0.5,0.5)是BitMap的正中心
    混合模式也是PIXI.js的属性,参见PIXI.js官方文档
    注:PIXI.js中很多地方都有blendMode,Sprite_Destination是一个Sprite,而Sprite是PIXI.Sprite,可以在initialize()方法中看到

    我们只需要把创建Bitmap改为load一张png(尺寸最好48*48),就可以把闪动的白块替换成想要的图标

    在plugins下新建一个js文件,命名为 AltCursor.js
    覆盖 Sprite_Destination 的 createBitMap 方法,改为从img/mouse文件夹下load cursor.png 文件
    文档 https://developer.rpgmakerweb.com/rpg-maker-mz/Bitmap.html
    PS: 标题说的4行代码,就是中间4行

    JAVASCRIPT 代码
    1. Sprite_Destination.prototype.createBitmap = function() {
    2.     this.bitmap = Bitmap.load("img/mouse/cursor.png");
    3.     this.anchor.x = 0.5;
    4.     this.anchor.y = 0.5;
    5.     this.blendMode = 1;
    6. };
    复制代码


    到此就已经替换了,下面代码可以更改箭头的跳动规则,请自行研究
    这里相较原版,改动了透明度,变得更加不透明
    PS: 透明度0-255,参见源码 rmmz_core.js 1919 行

    JAVASCRIPT 代码
    1. Sprite_Destination.prototype.updateAnimation = function() {
    2.     this._frameCount++;
    3.     this._frameCount %= 20;
    4.     this.opacity = (40 - this._frameCount) * 6;
    5.     this.scale.x = 1 + this._frameCount / 20;
    6.     this.scale.y = this.scale.x;
    7. };
    复制代码


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

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-20 17:52 , Processed in 0.045864 second(s), 41 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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