设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2234|回复: 6
打印 上一主题 下一主题

[已经解决] 求教一个效果的实现方法,SLG用

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2007-2-13
帖子
48
跳转到指定楼层
1
发表于 2011-4-19 16:45:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Innelysion 于 2011-4-19 16:46 编辑



如上图那样,类似flash_data的样子,但可用自定义的不同图片(能用动画/循环图片的话更好)而且不会掉帧得太厉害……球实现方法或制作思路,先谢了……

点评

友情提示:“求”字写错了  发表于 2011-4-19 21:13

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

2
发表于 2011-4-19 19:58:12 | 只看该作者
不太理解什么意思...不过可以参考一些现成的战棋脚本看看人家怎么写的.
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1030
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

3
发表于 2011-4-20 06:30:04 | 只看该作者
有些東西因為太簡單而大家不屑于使用,我們只好把他放在黑幕當中~
http://rpg.blue/thread-84595-1-1.html
當然,速度沒有經過優化。
影響幀率的最大兇手是 zoom、angle、和 mirror,你把某四行注釋掉還是很快的。二十五個動畫左右不怎麼掉幀,一百個大概還能有15幀- -b
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2007-2-13
帖子
48
4
 楼主| 发表于 2011-4-20 17:20:50 | 只看该作者
本帖最后由 Innelysion 于 2011-4-20 17:21 编辑

>moy
就是地图图块上附带一层或数层额外的图形,必要的时候描绘出来或者事先全部生成,必要时再显示出来,用于标示特殊地区或移动攻击范围啥的……自带的flash_data因为找不到比较完善的tilemap重写所以难以达到需要的效果……

>禾西
啊啊禾西大已经救过我不止一次了vT
这个动画加强脚本已经在用了!一些界面和特效类的地方能极大提高视觉效果(差点想做全动画菜单)!!但像这些用处一次要大量生成该怎么写,还有脚本里的坐标是相对于屏幕的,怎么能让其锚定在图块上……

我还有另外一种想法是在整个地图上覆盖额外几层自动元件(4帧动画已经够了),需要的时候显示其中的一部分。不过还是那个……写脚本苦手vT
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1030
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

5
发表于 2011-4-21 12:06:41 | 只看该作者
站上有重寫 tilemap 的范例- -。
不過其實生成一個和地圖等大的viewport,把viewport的x值和y值和地圖的display_x、display_y掛鉤(計算程序在Spriteset_Map中),然後用這個viewport來生成批量動畫(雙重的 for 語句),然後就可以了。viewport移動,內部的sprite也會移動的。

當然還能用自動元件做,怎麼修改地圖元件,看遠景圖做地圖的教程吧,置頂帖有傳送門。

评分

参与人数 2星屑 +202 梦石 +2 收起 理由
「旅」 + 200 + 2
Innelysion + 2

查看全部评分

不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
169 小时
注册时间
2007-8-12
帖子
203
6
发表于 2011-4-21 16:03:04 | 只看该作者
本帖最后由 心雪 于 2011-4-21 16:29 编辑
  1. class Game_Character
  2.   #------------------------------------------------------
  3.   # ● 可以到达的位置
  4.   # ! 返回数组
  5.   # ! 递归调用
  6.   # x 当前x坐标
  7.   # y 当前y坐标
  8.   # s 当前步数
  9.   # a 当前数组 初始调用设置为nil
  10.   #------------------------------------------------------
  11.   def can_get(x = @x,y = @y,s = 10,a = nil)
  12.     #如果当前位置被用更少的步数走过,返回
  13.     if a == nil
  14.       a = Table.new($game_map.width,$game_map.height)
  15.       for i in 0...a.xsize
  16.         for j in 0...a.ysize
  17.           a[i,j] = -1
  18.         end
  19.       end
  20.     end
  21.     if a[x,y] != nil
  22.       if a[x,y] >= s
  23.         return a
  24.       end
  25.     end
  26.     #如果步数用尽,返回
  27.     if s < 0
  28.       return a
  29.     end
  30.     #添加当前位置
  31.     a[x,y] = s
  32.     #如果右方可以通行
  33.     if x < $game_map.width - 1
  34.       if passable?(x,y,6)
  35.         can_get(x+1,y,s-1,a)
  36.       end
  37.     end
  38.     #如果左方可以通行
  39.     if x > 0
  40.       if passable?(x,y,4) && x > 0
  41.         can_get(x-1,y,s-1,a)
  42.       end
  43.     end
  44.     #如果上方可以通行
  45.     if y < $game_map.height - 1
  46.       if passable?(x,y,2)
  47.         can_get(x,y+1,s-1,a)
  48.       end
  49.     end
  50.     #如果下方可以通行
  51.     if passable?(x,y,8) && y > 0
  52.       can_get(x,y-1,s-1,a)
  53.     end
  54.     return a
  55.   end
  56. end
  57. class Game_Map
  58.   attr :color_area
  59.   attr :need_refresh_color,true
  60.   alias _snow_heart_setup setup
  61.   def setup(*arg)
  62.     _snow_heart_setup(*arg)
  63.     @color_area = Table.new(width,height)
  64.     @need_refresh_color = false
  65.   end
  66.   def color_area=(v)
  67.     @color_area = v
  68.     @need_refresh_color = true
  69.   end
  70. end
  71.   
  72. class Spriteset_Map
  73.   alias _snow_heart_initialize_ initialize
  74.   def initialize
  75.     _snow_heart_initialize_
  76.     @color_sprite = []
  77.   end
  78.   alias _snow_heart_update_ update
  79.   def update
  80.     update_color
  81.     _snow_heart_update_
  82.   end
  83.   def update_color
  84.     #刷新图片,添加动画可以在这里写
  85.     if $game_map.need_refresh_color
  86.       refresh_color
  87.       $game_map.need_refresh_color = false
  88.     end
  89.   end
  90.   def refresh_color
  91.     for i in @color_sprite
  92.       i.dispose
  93.     end
  94.     for i in 0...$game_map.color_area.xsize
  95.       for j in 0...$game_map.color_area.ysize
  96.         if $game_map.color_area[i,j] > 0
  97.           sc = Sprite.new(@viewport1)
  98.           sc.z = 0
  99.           sc.bitmap = Bitmap.new(32,32)
  100.           sc.bitmap.fill_rect(0,0,32,32,Color.new(0,0,255,128)) #此处可修改风格
  101.           sc.x = (i*128 - $game_map.display_x + 3) / 4 + 16
  102.           sc.y = (j*128 - $game_map.display_y + 3) / 4 + 32
  103.           sc.ox = 16
  104.           sc.oy = 32
  105.           @color_sprite.push(sc)
  106.         end
  107.       end
  108.     end
  109.   end
  110. end
复制代码
制作SLG是个非常麻烦的工程……Good Luck
测试方法:
$game_map.color_area = $game_player.can_get
把脚本从VX改到XP好纠结=,=
------------------------------------------------------------
发现一错误……已修改,注释不小心写错了导致转成XP脚本时写错方向……看来注释也是不能马虎呢~

评分

参与人数 2星屑 +702 收起 理由
「旅」 + 700
Innelysion + 2

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2007-2-13
帖子
48
7
 楼主| 发表于 2011-4-22 17:38:25 | 只看该作者
谢谢禾西和心雪的指点,今天一早等小圆脸等到忘记看了,脚本和思路收回去慢慢磨……
自己用RM做SLG的确是太蛋痛了,到时看看ttp://www.hitpoints.net/tcv2/index.html这个软件好不好用……

点评

出了……ACFUN啊BILIBILI啊都可以在线吐槽- -顺便说:虚渊玄你这个中二!  发表于 2011-4-23 13:06
小圓臉11出了嗎?求私底下塞連接=v=  发表于 2011-4-22 17:43
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 18:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表