Project1

标题: 获得&更新玩家Sprite的API [打印本页]

作者: taoyihong    时间: 2023-9-10 13:11
标题: 获得&更新玩家Sprite的API
hi, 各位RM开发者

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

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

       
JAVASCRIPT 代码复制
  1. function playerGetWeightProcess(){
  2.  
  3.     var sprites = SceneManager._scene._spriteset._characterSprites;
  4.  
  5.     // 寻找玩家角色的精灵
  6.     var playerSprite = sprites.find(function(sprite) {
  7.         return sprite._character === $gamePlayer;
  8.     });
  9.  
  10.     if($gameActors._data[1].luk >= 100){
  11.         $gamePlayer.setMoveSpeed(2);
  12.         playerSprite.scale._x = 3
  13.         playerWeightLevel = 3;
  14.  
  15.     }else if($gameActors._data[1].luk >= 80){
  16.         $gamePlayer.setMoveSpeed(3);
  17.         playerSprite.scale._x = 2
  18.         playerWeightLevel = 2;
  19.  
  20.     }else if($gameActors._data[1].luk >= 60){
  21.         $gamePlayer.setMoveSpeed(4);
  22.         playerSprite.scale._x = 1
  23.         playerWeightLevel = 1;
  24.  
  25.     }
  26.  
  27. }


        我有2个问题:

        - 如何高效的获取$gamePlayer的sprite?我目前的实现方式是遍历了全地图,感觉很浪费
        - 如何手动更新变化后的sprite?目前这段代码的效果是,玩家必须移动1格,才会变胖

作者: shiroin    时间: 2023-9-10 14:52
var actor = $gameActors.actor(1);
actor.setCharacterImage(actor.characterName(), actor.characterIndex() + 2);
这个可以检索对应ID1的actor的sprite索引并进行改变,但我测试需要变更map才能发生改变(虽然$gameActors.actor(1)._characterIndex会立即改变)
我不懂代码,你可以试试看有没有优化空间
作者: 阵颜    时间: 2023-9-10 18:00
我不懂js,不过对于va来说,
一般是对玩家精灵引用的玩家类数值进行修改。
然后精灵内写更新进行自适应。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1