社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 道具中心
主题 : VX走路渐变,透明OR出现
secondsen 离线
级别: 总版主
显示用户信息 
0  发表于: 2009-01-30   
来源于 入门教程 分类

VX走路渐变,透明OR出现

小脚本,简单货,说正题

Game_Character 加入标识
  ###################################
  attr_accessor :move_opacity             # 行动时候渐变透明
  attr_accessor :step_opacity             # 渐变的步数
  ###################################
初始化里添加
    ###############
    @move_opacity = 0
    @step_opacity = 1
    ###############

移动时更新  这个方法(def) 更改如下

复制代码
  1.   #--------------------------------------------------------------------------
  2.   # ● 移动时的更新
  3.   #--------------------------------------------------------------------------
  4.   def update_move
  5.     distance = 2 ** @move_speed   # 变换移动速度与移动距离
  6.     distance *= 2 if dash?        # 跑步状态时移动速度加倍
  7.     #########################
  8.     if @move_opacity > 0 && @opacity < 250
  9.       @opacity += 255.0 / 2 ** (7 + @step_opacity - @move_speed)
  10.     elsif @move_opacity < 0 && @opacity > 5
  11.       @opacity -= 255.0 / 2 ** (7 + @step_opacity - @move_speed)
  12.     end
  13.     #########################
  14.     @real_x = [@real_x - distance, @x * 256].max if @x * 256 < @real_x
  15.     @real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
  16.     @real_y = [@real_y - distance, @y * 256].max if @y * 256 < @real_y
  17.     @real_y = [@real_y + distance, @y * 256].min if @y * 256 > @real_y
  18.     update_bush_depth unless moving?
  19.     if @walk_anime
  20.       @anime_count += 1.5
  21.     elsif @step_anime
  22.       @anime_count += 1
  23.     end
  24.   end
  25.   ############################
  26.   def update_stand(sign,frame)
  27.     if (@opacity < 5 && !sign) || (@opacity > 250 && sign)
  28.       return
  29.     end
  30.     if sign
  31.       @opacity += 255.0 / frame
  32.     else
  33.       @opacity -= 255.0 / frame
  34.     end
  35.   end
  36.   def ajustment
  37.     if @opacity <= 5
  38.       @opacity = 0
  39.     end
  40.     if @opacity >= 250
  41.       @opacity = 255
  42.     end
  43.   end
  44.   ############################


现在对这个说明一下。。。多了两个方法,一个是万能的渐变
另一个是调整一下透明度ajustment。可有可无,保险起见而已,透明度5和0 在视觉上都是透明的,而250,255你也看不出来差别所以作个调整

那么调用方法,有那个我多加的万能的渐变,其实能应付很多情况。。。。。

先说移动时渐变
调用
脚本 $game_map.events[7].move_opacity = -1  
                         (事件7,看[7]这个编号就知道了,负数是变透明,正数变成可见,0是不渐变)
脚本 $game_map.events[7].step_opacity = 2
                          (当走到第二个格子的时候,简便结束)
这就可以了,其他的事件该怎么做就怎么做
比如 设置移动路线 事件7  (等待移动结束)
          向左走
          向左走

不用移动路线,而事件的移动类型改为随机也能看出效果。。很灵活,事件还是那么调用就可以

第二个 update_stand(sign,frame) 的说明
调用方法
$game_map.events[7].update_stand(sign,frame)
其中 sign 为 true  或 false
fram 是 来影响 每一次调用改变透明度的量的

是用方法,这是game_character   而不是 Sprite_character(不知道拼写的对否)
这样很明显了 事件里面要有循环才可以生效,要不是只改一次看不出来效果

举个例子
变数操作  变数1 = 0
循环
  脚本 $game_map.events[6].update_stand(false,30)
变数操作  变数1  +=  1
  等待1贞   (TMD我把这个最重要的给忘记了)
  条件分歧  如果  变数1 == 30
    中断循环
  条件分歧结束
循环结束

必须有循环,适合场景中的事件在原地不动的时候的渐变

ajustment调用方发和上面介绍的一样
$game_map.events[6].ajustment
可有可无,调整一下而已,没什么用

汇报完毕,我闪人
[ 此帖被secondsen在2009-01-31 01:01重新编辑 ]
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
远方的葱 离线
级别: ①新人
显示用户信息 
1  发表于: 2012-02-17   
太牛了!t挺复杂的,希望能给个范例。
呵呵呵,初入幻想森林,多多包涵!
secondsen 离线
级别: 总版主
显示用户信息 
2  发表于: 2012-02-18   
从做了几次系统,范例早就弄丢了。。。OTZ。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
描述
快速回复

认证码:

验证问题:
22-5=?,答案:17 正确答案:17
按"Ctrl+Enter"直接提交