Project1

标题: 【ULDS】无限图层显示系统 Unlimited Layers Display System Ver2.18 [打印本页]

作者: taroxd    时间: 2014-7-9 21:32
标题: 【ULDS】无限图层显示系统 Unlimited Layers Display System Ver2.18
本帖最后由 taroxd 于 2017-11-22 18:29 编辑


禁止转载帖子链接之外的部分。
允许使用在商业、R18 等游戏中。
该脚本允许修改之后作为脚本素材二次发布(如移植或增加功能等)。这种情况下,请在任意位置注明原作者,并且有表明二次发布的版本并非 ULDS 的原始版本。


脚本编写:taroxd
范例制作:小柯

本脚本可以实现无限图片的显示,可以固定在地图上,也可以随主角移动,可以当做远景图、地图图层、遮挡图层甚至光效图层、阴影图层,并且可以受开关控制,灵活性非常大。
范例里面被当做类似于 overlay mapping 来做演示,但实际上ULDS在功能和自由度上都要更加强大,而且可以重复利用同一张图片以节约体积。

范例里不仅附带了制作地图的 PSD 源文件,而且赠送一个区域禁止通行的简单脚本。赠送的小脚本以 cc0 方式授权,在法律允许的范围内作者放弃该脚本相关的所有权利。





RUBY 代码复制
  1. #----------------------------------------------------------------------------
  2. # ● 无限图层显示系统 Unlimited Layers Display System By Taroxd
  3. #----------------------------------------------------------------------------
  4. #
  5. #  使用方法:导入此脚本后,在地图上备注如下内容。
  6. #
  7. #  <ulds=filename>
  8. #    x: X坐标
  9. #      公式,默认为 0
  10. #    y: Y坐标
  11. #      公式,默认为 0
  12. #    z: Z坐标
  13. #      公式,只计算一次,默认为 10,可以设置为 -100 来当作远景图使用
  14. #    zoom: 缩放倍率
  15. #      公式,默认为 1。缩放的原点为画面左上角。
  16. #    zoom_x: 横向缩放倍率
  17. #      公式,默认为 zoom
  18. #    zoom_y: 纵向缩放倍率
  19. #      公式,默认为 zoom
  20. #    opacity: 不透明度
  21. #      公式,默认为 255
  22. #    blend_type: 合成方式
  23. #      公式,只计算一次。默认为 0 (0:正常、1:加法、2:减法)
  24. #    scroll: 图像跟随地图卷动的速度
  25. #      实数,默认为 32
  26. #    scroll_x: 图像跟随地图横向卷动的速度
  27. #      实数,默认为 scroll
  28. #    scroll_y:图像跟随地图纵向卷动的速度
  29. #      实数,默认为 scroll
  30. #    loop: 循环
  31. #      冒号后面不需要填写任何东西。
  32. #    visible: 图像是否显示
  33. #      公式,默认为 true
  34. #    path: 图像的路径名
  35. #      默认为 Parallaxes
  36. #    color: 合成的颜色
  37. #      公式,只计算一次。默认为 Color.new(0, 0, 0, 0)
  38. #    tone: 色调
  39. #      公式,只计算一次。默认为 Tone.new(0, 0, 0, 0)
  40. #    eval: 初始化后,以 sprite 或 plane 为 self 执行的代码。
  41. #      公式,默认为空
  42. #    update: 图片显示时,每帧执行的更新代码
  43. #      公式,默认为 t += 1
  44. #    dispose: 图片释放前执行的代码
  45. #      公式,默认为空
  46. #  </ulds>
  47. #
  48. #  其中 filename 是图片文件名(无需扩展名),放入 Parallaxes 文件夹内
  49. #  这个文件夹可以通过 path 设置更改
  50. #
  51. #  在 <ulds=filename> 和 </ulds> 中间的部分均为选填。不填则自动设为默认值。
  52. #  每一个设置项只能写一行。(地图备注没有单行长度限制)
  53. #  每一行只能写一个设置项。
  54. #  一般来说,正常使用时大部分都是不需要设置的。
  55. #
  56. #  设置项目中的“公式”表示,这一个设置项可以像技能的伤害公式一样填写。
  57. #  “只计算一次”表示,该公式只会在刚刚进入地图时计算一次,之后不会更新。
  58. #  可用 t 表示当前已经显示的帧数,s[n], v[n] 分别表示 n 号开关和 n 号变量。
  59. #  width 表示图片宽度,height 表示图片高度。
  60. #
  61. #  例:
  62. #   <ulds=BlueSky>
  63. #     x: t
  64. #     scroll_x: 16
  65. #     scroll_y: 64
  66. #     loop:
  67. #   </ulds>
  68. #
  69. #  需要多行公式时,可以重复备注。
  70. #  例:
  71. #   <ulds=Slime>
  72. #     path: Battlers
  73. #     x: width / 2
  74. #     y: height / 2
  75. #     eval: self.ox = width / 2
  76. #     eval: self.oy = height / 2
  77. #     eval: self.angle = 180
  78. #   </ulds>
  79. #
  80. #----------------------------------------------------------------------------
  81. #  z 坐标详解:【-100】远景图
  82. #             【0】最低图块层、在普通角色下方
  83. #             【100】与普通角色相同
  84. #             【200】在普通角色上方
  85. #----------------------------------------------------------------------------
  86. #  更新记录:
  87. #   2014.07.10 Ver1.01: 修正了 zoom、zoom_y 会报错的问题
  88. #   2014.07.11 Ver1.02: 修正了切换图块组之后失效的问题
  89. #   2014.08.14 Ver1.1:  增加了 speed_x, speed_y 的设置
  90. #   2014.08.16 Ver1.2:  fix 设定更改为 scroll
  91. #   2014.08.29 Ver1.21: 修正了坐标误差
  92. #   2014.09.19 Ver1.22: 修正了远景图与图层使用相同文件时报错的问题
  93. #   2014.09.25 Ver2.0:  属性可以用公式进行设置了;其他细节改进
  94. #   2014.09.26 Ver2.01: 增加了 path、update 的设置
  95. #   2015.01.02 Ver2.1:  增加了 init、color、tone 的设置;其他细节改进
  96. #   2015.01.03 Ver2.11: 修复了 zoom 属性会导致坐标误差的问题
  97. #   2015.02.02 Ver2.12: 支持多行备注和公式中的 width 和 height;其他细节改进
  98. #   2015.07.04 Ver2.13: 修复了循环时可能不会更新的问题
  99. #   2017.03.22 Ver2.15: 允许文件名为空,即备注 <ulds></ulds>
  100. #   2017.05.10 Ver2.16: 增加了 dispose 设置
  101. #   2017.08.22 Ver2.17: 修复文件名为空时导致的 bug
  102. #   2017.10.04 Ver2.18: 增强兼容性
  103. #----------------------------------------------------------------------------
  104.  
  105. module Taroxd; end
  106.  
  107. module Taroxd::ULDS
  108.  
  109.   DEFAULT_PATH = 'Parallaxes'                    # 图片文件的默认路径
  110.   DEFAULT_Z = 10                                 # 默认的 z 值
  111.   RE_OUTER = /<ulds[= ]?(.*?)>(.*?)<\/ulds>/mi  # 读取备注用的正则表达式
  112.   RE_INNER = /(\w+) *: *(.*)/                    # 读取设置用的正则表达式
  113.  
  114.   module Base
  115.     include Math
  116.  
  117.     attr_accessor :scroll_x, :scroll_y
  118.  
  119.     def dispose
  120.       bitmap.dispose if bitmap
  121.       super
  122.     end
  123.  
  124.     def adjust_x(x)
  125.       return x if !@scroll_x || @scroll_x.abs < Float::EPSILON
  126.       $game_map.adjust_x(x.fdiv(@scroll_x)) * @scroll_x
  127.     end
  128.  
  129.     def adjust_y(y)
  130.       return y if !@scroll_y || @scroll_y.abs < Float::EPSILON
  131.       $game_map.adjust_y(y.fdiv(@scroll_y)) * @scroll_y
  132.     end
  133.   end
  134.  
  135.   class Sprite < ::Sprite
  136.     include Base
  137.  
  138.     def x=(x)
  139.       super(adjust_x(x))
  140.     end
  141.  
  142.     def y=(y)
  143.       super(adjust_y(y))
  144.     end
  145.   end
  146.  
  147.   class Plane < ::Plane
  148.     include Base
  149.  
  150.     attr_reader :visible
  151.  
  152.     def initialize(_)
  153.       super
  154.       @visible = true
  155.     end
  156.  
  157.     def x=(x)
  158.       self.ox = -adjust_x(x)
  159.     end
  160.  
  161.     def y=(y)
  162.       self.oy = -adjust_y(y)
  163.     end
  164.  
  165.     def visible=(visible)
  166.       super
  167.       @visible = visible
  168.     end
  169.  
  170.     def width
  171.       bitmap.width
  172.     end
  173.  
  174.     def height
  175.       bitmap.height
  176.     end
  177.   end
  178.  
  179.   class << self
  180.  
  181.     # 从备注中读取设置,并生成数组
  182.     def from_note(note, viewport)
  183.       note.scan(RE_OUTER).map do |name, contents|
  184.         settings = {nil => name}
  185.         contents.scan(RE_INNER) do |key, value|
  186.           (settings[key] ||= '') << value << "\n"
  187.         end
  188.         new(settings, viewport)
  189.       end
  190.     end
  191.  
  192.     # 返回一个 ULDS::Sprite 或 ULDS::Plane 的实例
  193.     def new(settings, viewport)
  194.       @settings = settings
  195.       container(viewport)
  196.     end
  197.  
  198.     private
  199.  
  200.     def container(viewport)
  201.       (extract('loop') ? Plane : Sprite).new(viewport).tap do |container|
  202.         container.bitmap = make_bitmap
  203.         container.instance_eval(init_container_code, __FILE__, __LINE__)
  204.       end
  205.     end
  206.  
  207.     # 在一个 sprite 或 plane 的上下文中执行的代码。
  208.     # 如果难以理解,请尝试输出这段代码来查看。
  209.     def init_container_code
  210.       "#{binding_code}
  211.       #{init_attr_code}
  212.       #{define_update_code}
  213.       #{define_dispose_code}
  214.       #{extract 'eval'}"
  215.     end
  216.  
  217.     # 定义变量的代码
  218.     def binding_code
  219.       's = $game_switches
  220.       v = $game_variables
  221.       t = 0'
  222.     end
  223.  
  224.     # 只计算一次的初始化代码
  225.     def init_attr_code
  226.       "#{set_attr_code 'z', DEFAULT_Z}
  227.       #{set_attr_code 'scroll_x', 32}
  228.       #{set_attr_code 'scroll_y', 32}
  229.       #{set_attr_code 'blend_type'}
  230.       #{set_attr_code 'color'}
  231.       #{set_attr_code 'tone'}"
  232.     end
  233.  
  234.     # 更新的代码
  235.     def define_update_code
  236.       %{
  237.         define_singleton_method :update do
  238.           #{set_attr_code 'visible'}
  239.           return unless visible
  240.           #{set_attr_code 'zoom_x'}
  241.           #{set_attr_code 'zoom_y'}
  242.           #{set_attr_code 'opacity'}
  243.           #{set_attr_code 'x', 0}
  244.           #{set_attr_code 'y', 0}
  245.           #{set_t_code}
  246.         end
  247.       }
  248.     end
  249.  
  250.     def define_dispose_code
  251.       code = extract('dispose')
  252.       !code ? "" : %{
  253.         define_singleton_method :dispose do
  254.           #{code}
  255.           super()
  256.         end
  257.       }
  258.     end
  259.  
  260.     # 设置属性的代码
  261.     def set_attr_code(key, default = nil)
  262.       formula = extract(key, default)
  263.       formula && "self.#{key} = (#{formula})"
  264.     end
  265.  
  266.     # 设置时间的代码
  267.     def set_t_code
  268.       extract('update', 't += 1')
  269.     end
  270.  
  271.     # 获得位图
  272.     def make_bitmap
  273.       basename = extract(nil)
  274.       if !basename.empty?
  275.         folder_name = "Graphics/#{extract('path', DEFAULT_PATH).chomp}"
  276.         Bitmap.new("#{folder_name}/#{basename}")
  277.       else
  278.         nil
  279.       end
  280.     end
  281.  
  282.     # 获取备注中的设定值
  283.     def extract(key, default = nil)
  284.       @settings[key] || /(.+)_[xy]\Z/ =~ key && @settings[$1] || default
  285.     end
  286.   end
  287. end
  288.  
  289. class Game_Map
  290.  
  291.   def note
  292.     @map.note
  293.   end
  294. end
  295.  
  296. class Spriteset_Map
  297.  
  298.   def create_ulds
  299.     @ulds = Taroxd::ULDS.from_note($game_map.note, @viewport1)
  300.     @ulds_map_id = $game_map.map_id
  301.   end
  302.  
  303.   def refresh_ulds
  304.     dispose_ulds
  305.     create_ulds
  306.   end
  307.  
  308.   def update_ulds
  309.     refresh_ulds if @ulds_map_id != $game_map.map_id
  310.     @ulds.each(&:update)
  311.   end
  312.  
  313.   def dispose_ulds
  314.     @ulds.each(&:dispose)
  315.   end
  316.  
  317.   # 导入
  318.   %w(create update dispose).each do |name|
  319.     sym  = :"#{name}_parallax"
  320.     hook = :"#{name}_ulds"
  321.     old  = instance_method sym
  322.     define_method sym do
  323.       send hook
  324.       old.bind(self).call
  325.     end
  326.   end
  327. end



无限图层显示系统 Unlimited Layers Display System.7z

6.79 MB, 下载次数: 15697


作者: 越前リョーマ    时间: 2014-7-9 22:33
范例制作的累死了,过来吃糖。
希望以后能看到很多作品使用国产的这个ULDS系统而不是进口货
作者: ★PIG★    时间: 2014-7-9 22:43
小柯观光团路过,我对于墙体没有阴影耿耿于怀
作者: 寂静的夜里    时间: 2014-7-9 22:44
这个好 这个赞 直接弄到游戏来
作者: 千葉玖濑    时间: 2014-7-9 22:52
xd触观光团路过w
这样光效啥的就大丈夫了w
作者: 退屈£无聊    时间: 2014-7-9 23:53
这奇葩的新dz折腾到要死
虽然确实比之前那个自由度高了很多..但是小柯你的阴影画出去了(

作者: 铅笔描绘的思念    时间: 2014-7-10 03:01
前排支持ww
作者: ·雾逝者·    时间: 2014-7-10 08:43
喔这个屌,地图的新世界!
{:2_270:}画一堆重岩叠嶂永远走不出去的迷宫好了
这阴影,简直酸爽
作者: lanyaolove    时间: 2014-7-10 10:18
木有XP版么
作者: taroxd    时间: 2014-7-10 10:47
lanyaolove 发表于 2014-7-10 10:18
木有XP版么


木有,也不会有

你需要的话可以尝试找人移植过去。
作者: 吹奏团号角    时间: 2014-7-22 20:35
看上去很好用的样子~可以重复利用一张图太棒了(人´∀`)
作者: zmxzmx118    时间: 2014-8-14 14:03
辛苦了,顶一个
作者: taroxd    时间: 2014-8-14 14:06
2014.08.14 更新Ver1.1:  增加了 speed_x, speed_y 的设置
作者: 越前リョーマ    时间: 2014-8-16 13:10
范例也更新啦,增加了一个雾的演示
作者: satgo1546    时间: 2014-8-16 13:37
建议增加parallax(不知道有没有拼错
就是跟随主角移动的速度。
例如
CSS 代码复制
  1. parallax: 75%;
则主角移动4像素,层移动3像素。
还可以
CSS 代码复制
  1. parallax: 75% 0%;
则主角只有横向移动才有上述效果。
虽然不知道有什么用……
(好吧我确实CSS写习惯了……

严重吐槽:
建议改用如下格式
HTML 代码复制
  1. <style>
  2. map {
  3.   ulds-image: url(filename.png);
  4.   ulds-parallax: 75%;
  5.   /* 这样就可以用CSS了 */
  6.   width: 300px;
  7.   height: 300px;
  8.   margin: 1em auto;
  9. }
  10.  
  11. body {
  12.   background-image: linear-gradient(red, orange, yellow, lime, cyan, blue, purple, red); /* 啦啦啦 */
  13. }
  14. </style>
建议直接用XML的语法算了
建议用JSON格式
建议自豪地采用Wordpress

作者: taroxd    时间: 2014-8-16 14:01
本帖最后由 taroxd 于 2014-8-16 14:07 编辑
satgo1546 发表于 2014-8-16 13:37
建议增加parallax(不知道有没有拼错
就是跟随主角移动的速度。
例如parallax: 75%;[/pre]则主角移动4像素 ...

建议接受,吐槽不接受

设定部分本来就不是仿着某一门语言写的,只是做着做着就成这样了。
也许是我本来就把这货当成hash语法的缘故。这种json形的语法来做hash其实我还是挺喜欢的

想改语法的话,自行修改读取备注用的正则表达式吧
作者: 神秘影子    时间: 2014-8-18 17:47
现在才看到,已瞎,大触的世界啊
作者: 三途亚梦    时间: 2014-8-21 17:02
效果极佳~  就是感觉描绘不能通过的区域略不方便……事件设置也略不直观做起来有点头痛……
作者: taroxd    时间: 2014-8-29 11:56
2014.08.29 更新

删除了 round 带来的误差
作者: 月华风    时间: 2014-9-17 19:34
话说 使用了相同的远景图的两张地图切换时会有bug 不知道你们有没有找到原因
作者: taroxd    时间: 2014-9-18 12:33
月华风 发表于 2014-9-17 19:34
话说 使用了相同的远景图的两张地图切换时会有bug 不知道你们有没有找到原因 ...

是什么bug呢?愿闻其详。
作者: taroxd    时间: 2014-9-26 18:20
更新2.01,去除了 speed_x, speed_y,而可以将横坐标和纵坐标用计算公式表示。
可以使用已经显示的帧数,可以使用变量!可以使用三角函数来实现左右震荡的效果等等

为啥要提供这么奇怪的设置?
1. 因为公式也可以是一个简单的常数。增加灵活性的基础上不影响原先的设置方式。并不强迫使用这个特性。
2. 因为这个脚本不只可以画地图图层(事实上这个脚本的设计初衷本来就不是做地图的……从原先备注的 <pic> 就可以看出来,这原本只是一个简单显示图片的脚本)
   这为图片的自由移动提供了实现方式。移动还可以包括缩放,不透明度的更改等等。
3. 因为我自己想要这么用
作者: taroxd    时间: 2015-1-2 18:29
taroxd 发表于 2014-9-26 18:20
更新2.01,去除了 speed_x, speed_y,而可以将横坐标和纵坐标用计算公式表示。
可以使用已经显示的帧数,可 ...

更新,将公式的上下文放入 sprite 或 plane 中,并增加了 color, tone, init 属性
作者: killGOF2    时间: 2015-2-4 11:44
加個事件的自用開關當條件,更好用了 {:2_275:}

    def binding_code
      's = $game_switches
      v = $game_variables
      t = 0
      e = $game_self_switches'
    end

visible: e[[地圖ID,事件ID,"開關名稱"]]

作者: taroxd    时间: 2015-2-4 11:53
本帖最后由 taroxd 于 2015-2-4 11:54 编辑
killGOF2 发表于 2015-2-4 11:44
加個事件的自用開關當條件,更好用了

    def binding_code


把方法定义在 Taroxd::ULDS::Base 里面的话,就可以在公式里使用了哦~ 例子如下:

RUBY 代码复制
  1. # usage:
  2. #   visible: e(3, 'A')
  3.  
  4. # defined in Taroxd::ULDS::Base
  5. def e(event_id, letter)
  6.   $game_self_switches[[$game_map.map_id, event_id, letter]]
  7. end


嘛,虽然 ULDS 的代码写得不是很好懂,但是这种扩展还是非常容易的~
作者: killGOF2    时间: 2015-2-5 01:27
似乎有BUG

想用黑色圖片(32*32),遮住未經過的區域
但是人物經過時地圖上有些圖塊沒被遮住....不過有些很正常的遮住

使用的地圖是內建的:帝國軍堡壘:1層

<ulds=kuro>
x: 7*32
y: 25*32
z: 200
zoom_x:14-7
zoom_y:32-25
visible:not p(7,27,13,34)
</ulds>

    def p(ptx,pty,pdx,pdy)
      if ptx <= $game_player.x && pty <= $game_player.y && pdx >= $game_player.x && pdy >= $game_player.y
        return true
      else
        return false
      end   
     end










作者: taroxd    时间: 2015-2-5 07:45
killGOF2 发表于 2015-2-5 01:27
似乎有BUG

想用黑色圖片(32*32),遮住未經過的區域


不是 bug。优先级高于人物的图块 z 值为200,你并没有令 z 值高于这个
作者: tttbubble    时间: 2015-2-17 19:35
请问如何做到图层渐变效果
利用透明度吗?尝试过好几种格式都无法实现,谢谢。。。
作者: rpg-sheep    时间: 2015-2-18 12:25
非常不错的系统呢,用来做双远景是个不错的选择,抱走喽。
(angle这个重要的东东跑哪里去了,是用 eval: self.angle = 180 这句代替了么~)
作者: taroxd    时间: 2015-2-18 12:36
rpg-sheep 发表于 2015-2-18 12:25
非常不错的系统呢,用来做双远景是个不错的选择,抱走喽。
(angle这个重要的东东跑哪里去了,是用 eval: s ...


Plane 没有 angle,可以设置的都是 Sprite 和 Plane 的通用功能。而且 angle 需要 ox,oy 的调整,比较麻烦,也不是特别重要的功能。所以,知道 angle 的存在的人,都可以用 eval 来写吧(我在注释里举的就是这个例子)
作者: yubenzuo    时间: 2015-3-1 11:53
萌新求问,图片路径PIC_PATH = 'Graphics/Parallaxes/'这里
如何能修改成根据“地图ID"名 然后从不同的文件夹下读取图片……
强迫症总觉得全部的图片全丢一个文件夹下各种不舒服……
比如我的map001叫妖精之泉 然后读取图片路径就变成Graphics/Parallaxes/妖精之泉/……
map002叫妖精之湖 路径就变成Graphics/Parallaxes/妖精之湖/……
谢谢……

作者: taroxd    时间: 2015-3-1 12:39
yubenzuo 发表于 2015-3-1 11:53
萌新求问,图片路径PIC_PATH = 'Graphics/Parallaxes/'这里
如何能修改成根据“地图ID"名 然后从 ...


可以设置这个属性(请更新到最新版)
path: Parallaxes/妖精之泉
作者: yubenzuo    时间: 2015-3-1 12:53
taroxd 发表于 2015-3-1 12:39
可以设置这个属性(请更新到最新版)
path: Parallaxes/妖精之泉

抱歉……是我没看仔细……
我光想着改脚本的事……没注意有最新版~
万分感谢~感谢分享这么棒的脚本~
作者: Nanguage    时间: 2015-4-12 13:13
无知的问一下地图比较大的话,该怎么办呢?放小比例后截下来后来会不会对不上
作者: neverstop    时间: 2015-7-4 11:15
貌似。
  1. <ulds=光效1>
  2.   x: t
  3.   z: 202
  4.   blend_type: 1
  5.   loop:
  6. </ulds>
复制代码
图片不会更新诶。
只有
  1. <ulds=光效1>
  2.   x: t
  3.   z: 202
  4.   blend_type: 1
  5.   loop:
  6.   visible: true
  7. </ulds>
复制代码
才会更新。
说好的   visible: 图像是否显示  公式,默认为 true 呢
作者: 正常人小彩    时间: 2015-12-16 13:30
(^_^)不能更赞!!!(ΦωΦ)(ΦωΦ)
作者: 酱油娘    时间: 2016-1-17 04:12
楼主人如头像~~实在伟大~~决心立即投入国产脚本的怀抱~~
作者: lottesong    时间: 2016-2-21 05:23
以前不都是这种格式吗
<pic=parXX>
<pic=groundXX>
新版有什么新修正和功能呀?要是每个地图换一遍注释也是很痛苦的QwQ
作者: 魔力的觉醒    时间: 2016-2-26 12:19
又回归用ace   是时候来一波PS地图了

作者: shencao    时间: 2016-6-1 14:58
刚入门菜鸟的时候看不懂脚本就没考虑过……现在一看超级好用啊!真心比国外的好用!感谢作者啊!!!

以及还想问一下,这个脚本可以商用吗?或者商用需要付费吗?
(虽然我暂时不会做那么高端的不过也许说不定万一呢是不是(并不会wwwww
作者: 咖啡狐.麟音    时间: 2017-3-5 23:04
{:2_260:}非常感谢!已经下载!正在研究中!解决了我的地图美化问题!
作者: megaman    时间: 2017-3-19 12:14
这个脚本vx能用吗?vx没有无限图层的
作者: noah0909961    时间: 2018-1-6 20:14
不好意思,我下載了之後,開啟範例,人物會自動往左邊移動,直到碰到障礙物,方向鍵也不能止步,是為甚麼?
作者: devil033    时间: 2018-4-14 16:09
发现个不太确定是不是BUG的BUG
1 用一张有水有陆地的图片(图片1)作为地图,设置z:0
2 然后在游戏里面使用水的图块照着图片1中水的位置重新描一遍,其实就是懒得把图片1中的水扣掉(因为图片的水不会动,需要在地图上画才会动),想直接通过修改Z坐标来覆盖
3 进游戏,发现地图中的水会动了,因为画的水图块Z坐标在图片1之上,但是,问题来了,当人物的Y坐标小于10时(我在不同的工程试不一样,有的是小于9,有的是小于7),图片1竟然比我画的水的Z坐标要高了,把水覆盖了,变成静态了

这算是个BUG吗?
作者: devil033    时间: 2018-9-16 17:37
再请教个问题,当场景切换时,如果图片大小大于100*100,载入时间基本上需要3秒至5秒时间
包括如果所在场景图片大于 100*100,进入菜单后切回地图或从战斗中切回地图,载入时间也是要3秒至5秒时间
这个时间有办法缩短吗?
作者: devil033    时间: 2018-9-19 12:04
devil033 发表于 2018-9-16 17:37
再请教个问题,当场景切换时,如果图片大小大于100*100,载入时间基本上需要3秒至5秒时间
包括如果所在场景 ...

<ulds>
eval: @bitmap = Bitmap.new ("Graphics/Parallaxes/123")
update: self.bitmap = @bitmap
</ulds>

仿照着写了一下,123为当前地图的图层
只要切换场景(比如进菜单或战斗),已经载入的图片就dispose掉了
再切回MAP就又重新读取?

作者: devil033    时间: 2018-10-3 20:00
试着 P 了一下
只要一进入菜单 @ulds就空了
然后试着强制让 @ulds不清空
可是当从菜单退回地图时@ulds还是空了
然后就需要重新载入远景图了

再次请教下,怎么设置才能使进入菜单和战斗时,远景图不清空,以保证从菜单退回地图和从战斗切回地图时可以快速切换?
作者: cinderelmini    时间: 2019-5-16 17:56
呃……提个问题,也许不止我会遇到这种需求……
就是,当给精灵的层使用wave功能时,它不会更新……
经过一阵测试,发现是精灵的update方法没有被执行,
给层加上“update: self.update”会触发deep,加上"update: super"就更不行了,
经过一阵操作,发现给精灵的update加上alias,之后再"update: alias的update"之后wave的动态就出现了。

虽然可能没啥人用到,但是可以有更方便的方式让精灵的update被执行嘛?

作者: 星之璇    时间: 2019-6-7 08:30
这个可以有!VX和VA最恶心的没有三层图层的问题可以解决了,顺便可以加些光影什么的也解决了
作者: devil033    时间: 2019-7-26 21:32


我是使用图片作为地图地
偶尔在战斗结束返回大地图的时候出这个错,有时候会连着几次报错,有时候很久不出错
而且都是地图比较大的情况下才出现, 200*150以上的那种
100*100以下的没出现过

作者: 库客蓝    时间: 2019-7-30 20:28
很好!!用好久了!
用心的话可以做成画质很高的游戏啊!!
作者: sdgn    时间: 2019-8-1 22:54
本帖最后由 sdgn 于 2019-8-1 22:56 编辑

東西很好~ 但問題是非原生功能在預設的軟體項目中無法直接徒手使用...
單純的光影效果應該用[圖片的顯示]就能做到
作者: 午睡的风铃    时间: 2019-8-9 08:46
请问能把图层设置成与人物同层的事件那样的遮挡效果吗?
就是人物X坐标不大于事件时,人物的图像被事件遮挡,反之遮挡事件的效果。
使用的人物行走图大于64像素。
作者: 璀璀    时间: 2020-3-25 09:35
谢谢 打算看看
作者: zyjchm322    时间: 2020-8-17 09:01
这是我见到的第一个允许使用在商业用途中,不求回报的.真是无私的奉献.真正的大佬.衷心感谢.
作者: yeujsj    时间: 2023-1-20 21:06
发现好东西。。。谢谢。学到了




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