| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2014-2-24 |
| 在线时间 | 103 小时 |
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 103 小时
- 注册时间
- 2013-12-12
- 回帖
- 182
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 rmav 于 2014-2-14 12:37 编辑
概述:
1.支持rmVA原格式
2.支持自定义格式:如多帧、8方图、显示高低等
3.无论4方图或8方图,都可4向或8向行走(可选其一)
4.有火车拥挤处理:当人物够宽或够高时会有适当的调整,免得总是挤在一起
5.障碍踏步:多帧大图,用键盘行走,要是没有障碍踏步的话,手感会很差。
6.动态待机:当人物停下时,会播放待机动画(包括火车)《包括事件人物》
7.替换图片:使玩家可替换不同格式的行走图。使行走图的识别与格式串脱钩
8.事件移动:多帧事件可连续移动把帧数全展现出来
9.跑步切换:跑步图、行走图、待机图依状态切换。领队、火车、事件均可
10.loading界面:当场景中有用到多个较大素材时(如3状态大图人物),进行loading
11.事件寻路: 定点,绕行,效率可调,多事件寻路也可保障帧率与单事件差不多
【5678910.11】这7个功能可选
详细请看各插件说明
应用举例:
使用商业素材行走图
使用rmXP行走图
☆注意☆:没用到的功能请全部关闭,可提高兼容性及避免没必要的效率影响
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
示例工程v1.137(不含dll)
walkDemo_v1.137.rar
(1.68 MB, 下载次数: 2767)
(已清除46楼以内所报bug)
v1.137 : 加入事件动画loading;loading中无音乐,完后播放。
v1.136 : 若在路径中发生意外(如地震,板块漂移什么的- -!),重新寻路
v1.135 : loading编辑器中设置的所有角色
v1.134 : 在demo中演示多人寻路
v1.132 : 调整了下函数,不用文件名判断[寻路插件]
v1.13 : 局部寻路也进行调度并修复一个被不断快速堵截而跳出的bug[寻路插件]
v1.12 : 调整首次全地图寻路失败后的寻路速度 [寻路插件]
v1.11 : 支持场所移动时loading [loading插件]
v1.1 : 加入寻路插件
v1.099 : 加入图块组loading [loading插件]
v1.098 : 修复bug:Fiber dead ;自动加载多远景 [ loading插件]
v1.097 : 添加一个间隔选项,以便大游戏释放缓存及reloading [loading插件]
v1.096 : loading进度平滑显示
v1.095 : 加入loading插件
v1.09 : 加入跑步插件
v1.081 : 可设置某事件一直移动不停止;加入单行图8向移动
v1.08 : 给几个移动行为加上8向
把待机子插件中事件自动移动,分离出到另一个子插件中
v1.062 : 更新事件人物随机移动
v1.061 : 修正bug:事件人物不能固定踏步
v1.06 : 事件人物随机移动时,碰到障碍进入待机[前提:开启事件人物待机动画]
v1.051 : 改变事件人物的随机移动行为,使事件人物待机效果可较好的体现
v1.05更新: 碰到障碍停下来时,立即到默认帧处,而不是逐渐到默认帧处
v1.05更新: 修正bug:事件消除时,事件人物待机图还存在
v1.04更新:支持打包加密(默认关闭)
v1.036更新:添加全人物待机动画开关,如事件人物(默认关闭)
v1.035更新:初步整合仿空轨战棋v1.48 (不包括战斗行走) [在整合插件中]
v1.03更新: Window_Base直接可绘制自定义行走图,避免在默认情况下有些窗体上的行走图显示不全,如读档界面
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【以后有更新,只更新示例工程,不更新各楼中的代码了- -!】
由于有较多的使用说明,所以分在子插件中,方便查看与管理
楼层说明
1楼:行走插件 v1.0
2楼:替换插件 v1.0
3楼:屏蔽插件 v1.0
6楼:整合插件 v1.0 (若使用Sion鼠标脚本,直接用Sion鼠标帖中的8方移动补丁即可)
11楼:动态待机插件 v1.0
(配套插件需要放在主插件之下)
与鼠标插件整合的方法:
1.先把《多帧4_8方图,4_8向行走》插件放在鼠标插件之上,试试看能否正常
2.若1不正常,可尝试放在鼠标插件之下,并参考6楼方法。
#==============================================================================
# ■ 多帧4_8方图,4_8向行走
#
# 支持4方图:兼容rmVA原格式图片,4向8向行走
# 支持8方图:从上到下方向为:正、左、右、背、左下、右下、左上、右上
# 对应小键盘:24681379
# 支持开火车,有一定范围的拥挤处理。支持4、8方混合开
# 按住方向键时,碰到障碍物会踏步(可选)
# 可选4、8向行走,在代码开头设置,默认为8向行走
#------------------------------------------------------------------------------
#使用说明:对原rmVA不支持的格式,需要对文件名实行命名规则
# 1.png图片,须仅包含一个人物的全套行走
# 2.图片内容,从左到右,小于99帧;
# 从上到下8个方向:正、左、右、背、左下、右下、左上、右上
# 3.文件命名
# 文件名:角色名+格式串+.png
# name@D#DD%DD.png 其中%DD可选
# @D表示png文件中, 每一列有多少个图。以一位数表示,如8,即8个方向
# #DD表示png文件中,每一行有多少个图。以两位数表示,如06或6,即6帧
# %DD,可选,调整角色在游戏画面中的高度,单位像素。如20,即调低20像素
# 说明:因为如果是精美8方图的话,一般有带阴影,而阴影会比脚低
# 这时可通过%DD来调整人物在画面中的高低
# 有些图片空白过多,也可用此来调整,不用弄PS。
#
#小技巧:★可新建一个工程,以RMVA默认的角色领队开火车,可看出是否对齐
# ★若人物在开火车中挤紧在一起,把其每帧的图片加宽,如>=68像素即可。
#注意: ☆rmVA原格式行走图,停下来会停在第2帧(这是rmVA的默认方法)
# ☆自定义格式行走图,停下来会停在第1帧
# ☆格式串前的name必须在characters文件夹下的png文件中唯一
#------------------------------------------------------------------------------
# by rmav (有任何问题请毫无顾忌滴提出)
#
# v1.0
#==============================================================================
[pre lang="ruby" line="1"]
#encoding:utf-8
#==============================================================================
# ■ 多帧4_8方图,4_8向行走
#
# 支持4方图:兼容rmVA原格式图片,4向8向行走
# 支持8方图:从上到下方向为:正、左、右、背、左下、右下、左上、右上
# 对应小键盘:24681379
# 支持开火车,有一定范围的拥挤处理。支持4、8方混合开
# 按住方向键时,碰到障碍物会踏步(可选)
# 可选4、8向行走,在代码开头设置,默认为8向行走
#------------------------------------------------------------------------------
#使用说明:对原rmVA不支持的格式,需要对文件名实行命名规则
# 1.png图片,须仅包含一个人物的全套行走
# 2.图片内容,从左到右,小于99帧;
# 从上到下8个方向:正、左、右、背、左下、右下、左上、右上
# 3.文件命名
# 文件名:角色名+格式串+.png
# name@D#DD%DD.png 其中%DD可选
# @D表示png文件中, 每一列有多少个图。以一位数表示,如8,即8个方向
# #DD表示png文件中,每一行有多少个图。以两位数表示,如06或6,即6帧
# %DD,可选,调整角色在游戏画面中的高度,单位像素。如20,即调低20像素
# 说明:因为如果是精美8方图的话,一般有带阴影,而阴影会比脚低
# 这时可通过%DD来调整人物在画面中的高低
# 有些图片空白过多,也可用此来调整,不用弄PS。
#
#小技巧:★可新建一个工程,以RMVA默认的角色领队开火车,可看出是否对齐
# ★若人物在开火车中挤紧在一起,把其每帧的图片加宽,如>=68像素即可。
#注意: ☆rmVA原格式行走图,停下来会停在第2帧(这是rmVA的默认方法)
# ☆自定义格式行走图,停下来会停在第1帧
# ☆格式串前的name必须在characters文件夹下的png文件中唯一
#------------------------------------------------------------------------------
# by rmav (有任何问题请毫无顾忌滴提出)
#
# v1.0
#==============================================================================
$imported ||= {}
$imported[:rmav_walk] = true
module Rmav
#---------行走选项设置---------#
Opt_walk={
dir8_on: true, #false则4向行走,本插件系列其他功能仍可以用
step_ext_on: true #按着方向键碰到障碍物踏步,若为false则静止(rmVA默认是静止的)
}
INPUT_HV=[[0,0],[4,2],[0,2],[6,2],[4,0],[0,0],[6,0],[4,8],[0,8],[6,8]]
#--------------------------------------------------------------------------
# ● 缓存文件夹中所有png文件名
#--------------------------------------------------------------------------
def self.loadFolder(folderName)
@cache_folder||={}
folderName.gsub!(/\\/,'/')
folderName+='/' if folderName[-1]!='/'
folderName.downcase!
unless @cache_folder.include?(folderName)
@cache_folder[folderName]=[]
Dir.glob(folderName+"*.png"){|f|
@cache_folder[folderName]<<f.split('/')[-1].chomp!('.png').downcase
}
end
@cache_folder[folderName]
end
end
class Sprite_Character
#--------------------------------------------------------------------------
# ● 设置角色的位图(n方向,n帧)
#--------------------------------------------------------------------------
alias_method :set_character_bitmap_org_rmav, :set_character_bitmap
def set_character_bitmap
self.bitmap = Cache.character(@character_name)
@fmt_sign = @character_name[/\@(\d{1,2})\#(\d{1,2})(\%(\d{1,2}))?/]
if @fmt_sign
@fmt_sign=[$1.to_i,$2.to_i,$4.to_i]
@cw = bitmap.width / @fmt_sign[1]
@ch = bitmap.height / @fmt_sign[0]
self.ox = @cw / 2
self.oy = @ch-@fmt_sign[2]
else
set_character_bitmap_org_rmav
end
if @character
@character.cw=@cw
@character.ch=@ch
@character.fmt_sign=@fmt_sign
@character.original_pattern=0 if @fmt_sign
end
end
#--------------------------------------------------------------------------
# ● 更新源矩形
#--------------------------------------------------------------------------
def update_src_rect
if @tile_id == 0
index = @character.character_index
pattern = @character.pattern < (@fmt_sign?@fmt_sign[1]:3) \
? @character.pattern : 1
sx = (index % 4 * 3 + pattern) * @cw
sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
case @character.direction
when 1; sy=@fmt_sign?(@fmt_sign[0]==4?0:4)*@ch:(index / 4 * 4 ) * @ch
when 3; sy=@fmt_sign?(@fmt_sign[0]==4?0:5)*@ch:(index / 4 * 4 ) * @ch
when 7; sy=@fmt_sign?(@fmt_sign[0]==4?3:6)*@ch:(index / 4 * 4+3 ) * @ch
when 9; sy=@fmt_sign?(@fmt_sign[0]==4?3:7)*@ch:(index / 4 * 4+3 ) * @ch
end
self.src_rect.set(sx, sy, @cw, @ch)
end
end
end
class Game_Player
if Rmav::Opt_walk[:dir8_on]
#--------------------------------------------------------------------------
# ● 由方向键移动,8方向
#--------------------------------------------------------------------------
def move_by_input
return if !movable? || $game_map.interpreter.running?
input=Input.dir8
move_diagonal(*Rmav::INPUT_HV[input]) if input > 0
end
end
#--------------------------------------------------------------------------
# ● 更新步行/踏步动画
#--------------------------------------------------------------------------
alias_method :update_animation_org_rmav,:update_animation
def update_animation
if stopping? && @stop_count<1
@step_ext_anime=true
else
@step_ext_anime=false
end
super
end
end
class Game_CharacterBase
attr_accessor :cw,:ch,:fmt_sign,:original_pattern,:step_ext_anime
alias_method :characterBase_init_org_rmav, :initialize
def initialize
characterBase_init_org_rmav
@cw=@ch=0
@fmt_sign=nil
@step_ext_anime=false
end
#--------------------------------------------------------------------------
# ● 斜向移动
# horz : 横向(4 or 6)
# vert : 纵向(2 or 8)
#--------------------------------------------------------------------------
alias_method :charBase_move_diagonal_org_rmav, :move_diagonal
def move_diagonal(horz, vert, turn_ok = true)
unless turn_ok
charBase_move_diagonal_org_rmav(horz, vert)
return
end
@move_succeed = diagonal_passable?(x, y, horz, vert)
if @move_succeed
set_direction(Rmav::INPUT_HV.index([horz, vert]))
@x = $game_map.round_x_with_direction(@x, horz)
@y = $game_map.round_y_with_direction(@y, vert)
@real_x = $game_map.x_with_direction(@x, reverse_dir(horz))
@real_y = $game_map.y_with_direction(@y, reverse_dir(vert))
increase_steps
elsif turn_ok
set_direction(Rmav::INPUT_HV.index([horz, vert]))
check_event_trigger_touch_front
end
end
#--------------------------------------------------------------------------
# ● 更新动画图案
#--------------------------------------------------------------------------
def update_anime_pattern
if !@step_anime && @stop_count > 0
@pattern = @original_pattern
else
@pattern = (@pattern + 1) % (@fmt_sign?@fmt_sign[1]:4)
end
end
#--------------------------------------------------------------------------
# ● 更新动画计数
#--------------------------------------------------------------------------
alias_method :update_anime_count_org_rmav,:update_anime_count
def update_anime_count
if Rmav::Opt_walk[:step_ext_on] && !(moving? && @walk_anime) && @step_ext_anime
@anime_count += 1
else
update_anime_count_org_rmav
end
end
end
class Game_Follower
attr_accessor :gathering
alias_method :follower_initialize_org_rmav, :initialize
def initialize(member_index, preceding_character)
follower_initialize_org_rmav(member_index, preceding_character)
@gathering=false
end
#--------------------------------------------------------------------------
# ● 追随带队角色
#--------------------------------------------------------------------------
def chase_preceding_character
unless moving?
sx = distance_x_from(@preceding_character.x)
sy = distance_y_from(@preceding_character.y)
dx_pix=[(@preceding_character.cw+@cw)/2, 79].min
if !@gathering && dx_pix > sx.abs*32+16
if sy>0
return if (@ch>32+16&&sy<2)
elsif sy<0
return if (@preceding_character.ch>32+16&&sy.abs<2)
else
return
end
end
if sx != 0 && sy != 0
move_diagonal(sx > 0 ? 4 : 6, sy > 0 ? 8 : 2)
elsif sx != 0
move_straight(sx > 0 ? 4 : 6)
elsif sy != 0
move_straight(sy > 0 ? 8 : 2)
end
end
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
alias_method :update_org_rmav,:update
def update
@step_ext_anime = $game_player.step_ext_anime
@stop_count=0 if @step_ext_anime
update_org_rmav
end
end
class Game_Followers
#--------------------------------------------------------------------------
# ● 集合
#--------------------------------------------------------------------------
alias_method :gather_org_rmav,:gather
def gather
gather_org_rmav
visible_folloers.each {|follower| follower.gathering=true }
end
#--------------------------------------------------------------------------
# ● 判定是否集合完毕
#--------------------------------------------------------------------------
alias_method :gather_org_rmav?,:gather?
def gather?
ok = gather_org_rmav?
if ok
visible_folloers.each {|follower| follower.gathering=false }
end
ok
end
end
[/pre]
提供一个漂亮模特供展示,把图片另存为beauty@8#06%28.png放入工程charactors文件夹下
beauty@8#06%20
有什么问题,请大家随便指出,能不能解决那是另一回事{:2_276:} |
评分
-
查看全部评分
|