Project1

标题: 关于显示图片在角色下地图上的问题 [打印本页]

作者: 黛惠    时间: 2020-7-23 20:00
标题: 关于显示图片在角色下地图上的问题
希望能在角色之下、图块和事件之上显示图片,搜了一下显示图片脚本发现好像不能调整Z值
ulds感觉有点麻烦(挠头)有没有事件脚本可以实现这一点呢?
ps并不是要做烛光或者影子,所以这种类型的插件可能不太适合XD
作者: play337    时间: 2020-7-23 20:22
角色之下、圖塊和事件之上顯示圖片.... <--- 這實在難以理解?

可以用圖片說明嗎?
作者: congwsbn    时间: 2020-7-23 20:34
角色不动的话,可以用图片做个伪角色。
如果角色要动,还是建议用ulds来实现,这已经是比较简单的方法啦(。
作者: 芯☆淡茹水    时间: 2020-7-25 10:38
做地板花纹的话,图片是不会随着地图的卷动而更新坐标的。
至于将图片显示到地板之上,角色之下,那只是更改一下图片的 parent 的简单问题。
作者: moonyoulove    时间: 2020-7-25 11:05
如下图,因为图片与角色的组别不同,所以即使更改z也没有用

作者: 芯☆淡茹水    时间: 2020-7-25 12:58
两个图层兜转一下就行了。
  1. //==================================================================================================================
  2. Game_Picture.prototype.isSpecialDisplay = function() {
  3.     return this._specialDisplay;
  4. };
  5. Game_Picture.prototype.changeSpecialDisplay = function(state) {
  6.     this._specialDisplay = !$gameParty.inBattle() && state;
  7. };
  8. //==================================================================================================================
  9. var XR_SDPicture_Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  10. Game_Interpreter.prototype.pluginCommand = function(command, args) {
  11.     XR_SDPicture_Game_Interpreter_pluginCommand.call(this, command, args);
  12.     if (command === 'StartSpecialDisplay') {
  13.         $gameScreen.picture(+args[0]) && $gameScreen.picture(+args[0]).changeSpecialDisplay(true);
  14.     }
  15.     if (command === 'FinishSpecialDisplay') {
  16.         $gameScreen.picture(+args[0]) && $gameScreen.picture(+args[0]).changeSpecialDisplay(false);
  17.     }
  18. };
  19. //==================================================================================================================
  20. Sprite_Picture.prototype.setSpecialDisplayed = function(state) {
  21.     this._specialDisplayed = state;
  22. };
  23. var XR_SDPicture_Sprite_Picture_update = Sprite_Picture.prototype.update;
  24. Sprite_Picture.prototype.update = function() {
  25.     XR_SDPicture_Sprite_Picture_update.call(this);
  26.     this.updateSpecialDisplay();
  27. };
  28. Sprite_Picture.prototype.updateSpecialDisplay = function() {
  29.     if (!this.picture()) return;
  30.     if (this.picture().isSpecialDisplay()) {
  31.         !this.visible && this.picture().changeSpecialDisplay(false);
  32.     }
  33.     var type = null;
  34.     if (this._specialDisplayed) {
  35.         if (!this.picture().isSpecialDisplay()) type = 'restore';
  36.     } else {
  37.         if (this.picture().isSpecialDisplay())  type = 'convert';
  38.     }
  39.     if (type) {
  40.         var top = this.parent;
  41.         while (top.constructor !== Spriteset_Map) top = top.parent;
  42.         top[type+'PictureLayers'](this);
  43.     }
  44. };
  45. //==================================================================================================================
  46. Spriteset_Map.prototype.convertPictureLayers = function(pictureSprite) {
  47.     pictureSprite.z = 3;
  48.     pictureSprite.setSpecialDisplayed(true);
  49.     this._pictureContainer.removeChild(pictureSprite);
  50.     this._tilemap.addChild(pictureSprite);
  51. };
  52. Spriteset_Map.prototype.restorePictureLayers = function(pictureSprite) {
  53.     pictureSprite.setSpecialDisplayed(false);
  54.     this._tilemap.removeChild(pictureSprite);
  55.     this._pictureContainer.addChild(pictureSprite);
  56. };
  57. //==================================================================================================================
复制代码


上面的代码写入到插件脚本里。
插件命令: 将5号图片置于地图上角色下 =>  StartSpecialDisplay 5
插件命令: 将显示在地图上角色下的8号图片还原 =>  FinishSpecialDisplay 8
在消除图片时,也会自动还原
作者: 雪在燃    时间: 2020-7-25 23:11
https://rpg.blue/thread-403790-1-1.html
区域作为图层使用23333




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