secondsen 发表于 2009-1-30 23:25:23

VX走路渐变,透明OR出现

小脚本,简单货,说正题

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

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


#--------------------------------------------------------------------------
# ● 移动时的更新
#--------------------------------------------------------------------------
def update_move
    distance = 2 ** @move_speed   # 变换移动速度与移动距离
    distance *= 2 if dash?      # 跑步状态时移动速度加倍
    #########################
    if @move_opacity > 0 && @opacity < 250
      @opacity += 255.0 / 2 ** (7 + @step_opacity - @move_speed)
    elsif @move_opacity < 0 && @opacity > 5
      @opacity -= 255.0 / 2 ** (7 + @step_opacity - @move_speed)
    end
    #########################
    @real_x = [@real_x - distance, @x * 256].max if @x * 256 < @real_x
    @real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
    @real_y = [@real_y - distance, @y * 256].max if @y * 256 < @real_y
    @real_y = [@real_y + distance, @y * 256].min if @y * 256 > @real_y
    update_bush_depth unless moving?
    if @walk_anime
      @anime_count += 1.5
    elsif @step_anime
      @anime_count += 1
    end
end
############################
def update_stand(sign,frame)
    if (@opacity < 5 && !sign) || (@opacity > 250 && sign)
      return
    end
    if sign
      @opacity += 255.0 / frame
    else
      @opacity -= 255.0 / frame
    end
end
def ajustment
    if @opacity <= 5
      @opacity = 0
    end
    if @opacity >= 250
      @opacity = 255
    end
end
############################


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

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

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

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

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

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

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

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

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

汇报完毕,我闪人

远方的葱 发表于 2012-2-17 21:19:30

太牛了!t挺复杂的,希望能给个范例。

secondsen 发表于 2012-2-18 19:50:56

从做了几次系统,范例早就弄丢了。。。OTZ。。。
页: [1]
查看完整版本: VX走路渐变,透明OR出现