Project1

标题: 【插件】地图人物阴影 [打印本页]

作者: 过眼云烟    时间: 2015-11-17 08:52
标题: 【插件】地图人物阴影
本帖最后由 过眼云烟 于 2015-11-17 08:52 编辑

最近在学习js,尝试用js写自己需要的插件。
地图人物阴影插件是在RMMV游戏中非战斗界面下显示人物影子,默认情况下主角和队列都会显示影子,地图事件名中含有Sh则显示影子。
如果有问题欢迎留言。


效果如下:
JS 代码复制下载
  1. //=============================================================================
  2. // MrLiu_Shadow.js
  3. //=============================================================================
  4. /*:
  5. * Version: 2015-11-17-0001
  6. * @plugindesc 在RMMV游戏中非战斗界面下显示人物影子,
  7. * @help 使用方法:
  8. * 默认情况下主角和队列都会显示影子,地图事件名中含有Sh则显示影子。
  9. * @author 过眼云烟
  10. */
  11. var Imported = Imported || {};
  12. Imported.MrLiu_Shadow = true;
  13.  
  14. var Lmd = Lmd || {};
  15. Lmd.MrLiu_Shadow = Lmd.MrLiu_Shadow || {};
  16.  
  17.  
  18. Lmd.MrLiu_Shadow.Sprite_Character_initialize = Sprite_Character.prototype.initialize;
  19. Sprite_Character.prototype.initialize = function(character) {
  20.     Lmd.MrLiu_Shadow.Sprite_Character_initialize.call(this,character);
  21.         this._temperycharacter = character;
  22.         if ((character instanceof Game_Player)||(character instanceof Game_Follower)){
  23.                 this.createShadowSet();
  24.                 this._showShadow = true;
  25.         }
  26.         if ((character instanceof Game_Event) && (character.event().name.indexOf("Sh")>=0)){
  27.                 this.createShadowSet();
  28.                 this._showShadow = true;
  29.         }
  30. };
  31.  
  32. Sprite_Character.prototype.createShadowSet = function() {
  33.     this._shadowSprite = new Sprite();
  34.     this._shadowSprite.bitmap = ImageManager.loadSystem('Shadow1');
  35.         this._shadowSprite.x = this.x;
  36.     this._shadowSprite.y = this.y +8;
  37.         this._shadowSprite.anchor.x = 0.5;
  38.     this._shadowSprite.anchor.y = 1;
  39.     this._shadowSprite.z = -1;
  40.     this.addChild(this._shadowSprite);
  41. }       
  42.  
  43. Sprite_Character.prototype.update_character_shadow = function() {
  44.         this._shadowSprite.scale.x = ((this.patternWidth() * 100) / 48) / 90.0;
  45.         this._shadowSprite.scale.y = this._shadowSprite.scale.x;
  46.     this._shadowSprite.opacity = 150;
  47.         this._shadowSprite.visible = (this._characterName != "");
  48.         if (this._lastone != this._shadowx){
  49.         this._lastone = this._shadowx;
  50.         console.log(this._shadowx);
  51.         }
  52. }       
  53.  
  54. Lmd.MrLiu_Shadow.Sprite_Character_update = Sprite_Character.prototype.update;
  55. Sprite_Character.prototype.update = function() {
  56.         Lmd.MrLiu_Shadow.Sprite_Character_update.call(this);
  57.         if (this._showShadow == true) {
  58.         this.update_character_shadow();
  59.         }
  60. }

MrLiu_Shadow.rar

920 Bytes, 下载次数: 1405


作者: 高须小龙    时间: 2015-11-17 09:12
好溜啊!
作者: dc1988123    时间: 2015-11-17 10:29
感谢LZ分享。我发现了一个小问题,如果改进会更好。
人物接受跳跃指令过程时影子还是粘着人物脚下,如果跳跃时影子Y轴能下移1个单位应该就不会违和了吧。
作者: dc1988123    时间: 2015-11-17 10:39
可以添加插件指令自己需要的时候控制X和Y轴的加减和锁定X或Y轴就能更灵活的运用。
作者: 诗俊熙    时间: 2015-11-20 13:10
烟神威武,哈哈。
作者: 玄机子    时间: 2015-12-15 20:59
{:2_275:}
作者: Denis    时间: 2015-12-15 21:18
我的地图显示事件名字的,如果带个sh不会很怪吗?
作者: Denis    时间: 2015-12-26 18:59
建议SH在备注里
作者: king    时间: 2016-3-21 14:53
阴影图像 覆盖 角色图像   ?  ?   
阴影图像层应该是在角色层下方吧,我看下脚本,改下Z值,不过没什么用

作者: 死伤殆尽    时间: 2016-3-21 20:27
RM的光照默认是从左侧射入的
可以加个设置项,调整默认状态下影子向右偏移的程度
作者: doranikofu    时间: 2016-4-24 10:37
本帖最后由 doranikofu 于 2016-4-24 10:39 编辑
king 发表于 2016-3-21 14:53
阴影图像 覆盖 角色图像   ?  ?   
阴影图像层应该是在角色层下方吧,我看下脚本,改下Z值,不过没什么 ...


同样碰到这个问题。。。删掉所有其他插件也这样的
坐标调整一下然后不透明度调高就会看得特别明显
大部分情况可能看不出来,如果行走图淡色调的话就会很明显
mv里面z坐标基本是没有的,目前就发现动画显示有一个z坐标
影子这种设z坐标没有用
作者: wudicc1    时间: 2021-8-18 23:46
牛逼啊666
作者: 李椿荣    时间: 2021-8-20 17:11
谢谢,我体验一下。本来还打算自己画了。
作者: 超凡入梦    时间: 2021-9-11 17:01
借用,谢谢大佬!




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