查看: 1338|回复: 2

[有事请教] 获得&更新玩家Sprite的API

[复制链接]
梦石
0
星屑
185
在线时间
23 小时
注册时间
2023-9-2
回帖
13
发表于 2023-9-10 13:11:07 | 显示全部楼层 |阅读模式

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

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

×
hi, 各位RM开发者

        小弟正在写一个功能——玩家吃巧克力,体重上升,角色变胖

        目前的实现是通过下面代码完成的:

        [pre lang="javascript"]function playerGetWeightProcess(){

    var sprites = SceneManager._scene._spriteset._characterSprites;

    // 寻找玩家角色的精灵
    var playerSprite = sprites.find(function(sprite) {
        return sprite._character === $gamePlayer;
    });

    if($gameActors._data[1].luk >= 100){
        $gamePlayer.setMoveSpeed(2);
        playerSprite.scale._x = 3
        playerWeightLevel = 3;

    }else if($gameActors._data[1].luk >= 80){
        $gamePlayer.setMoveSpeed(3);
        playerSprite.scale._x = 2
        playerWeightLevel = 2;

    }else if($gameActors._data[1].luk >= 60){
        $gamePlayer.setMoveSpeed(4);
        playerSprite.scale._x = 1
        playerWeightLevel = 1;

    }

}[/pre]

        我有2个问题:

        - 如何高效的获取$gamePlayer的sprite?我目前的实现方式是遍历了全地图,感觉很浪费
        - 如何手动更新变化后的sprite?目前这段代码的效果是,玩家必须移动1格,才会变胖
梦石
0
星屑
7009
在线时间
1280 小时
注册时间
2016-12-6
回帖
378
发表于 2023-9-10 14:52:30 | 显示全部楼层
var actor = $gameActors.actor(1);
actor.setCharacterImage(actor.characterName(), actor.characterIndex() + 2);
这个可以检索对应ID1的actor的sprite索引并进行改变,但我测试需要变更map才能发生改变(虽然$gameActors.actor(1)._characterIndex会立即改变)
我不懂代码,你可以试试看有没有优化空间
回复

使用道具 举报

梦石
1
星屑
15825
在线时间
5415 小时
注册时间
2017-2-18
回帖
413
发表于 2023-9-10 18:00:45 | 显示全部楼层
我不懂js,不过对于va来说,
一般是对玩家精灵引用的玩家类数值进行修改。
然后精灵内写更新进行自适应。
化而为鸟,其名为鸽。怒而咕,咕咕咕咕——咕咕咕!
回复 1 0

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部