Project1
标题: 求幫助同伴跟隨系統的改造 [打印本页]
作者: sdgn 时间: 2017-5-4 21:56
标题: 求幫助同伴跟隨系統的改造
本帖最后由 sdgn 于 2017-5-5 14:19 编辑
請問同伴跟隨系統...
如何改造到同伴跟主腳行走圖的位置 重疊 或者 距離靠近到能改造的極限?
跟隨者的顯示優先全最好是在主腳行走圖之上
望有人能相助~
拜託了~
OTZ
作者: Galleesen 时间: 2017-5-5 12:15
呃,为什么要这样做啊?
作者: 魔法丶小肉包 时间: 2017-5-5 21:14
本帖最后由 魔法丶小肉包 于 2017-5-6 12:50 编辑
有没有bug未知......慎用
脚本和事件需要一起设置
脚本作为插件脚本使用,事件如图
脚本:
class Game_Followers
def update
if gathering?
move
@gathering = false
end
each {|follower| follower.update }
end
end
class Game_Followers
def update
if gathering?
move
@gathering = false
end
each {|follower| follower.update }
end
end
事件:
事件中的脚本为:$game_player.followers.gather
编辑内容:
1.上面那张图的事件可以不需要使用了
2.再次缩短了同伴与主角的距离(这次应该是极限距离了吧...)
class Game_Followers
def update
move
@gathering = false
each {|follower| follower.update }
end
end
class Game_Followers
def update
move
@gathering = false
each {|follower| follower.update }
end
end
作者: sdgn 时间: 2017-5-5 21:47
本帖最后由 sdgn 于 2017-5-5 21:50 编辑
測試後確定可以用~
其實是想要實現類是GTA那樣模組化的搭乘效果...
二來可以做出類似紙娃娃系統~
另外例如要讓行走圖有防護罩之類的效果就不用準備額外版本
作者: 魔法丶小肉包 时间: 2017-5-5 22:01
跟随的同伴显示优先度大于主角
class Spriteset_Map
def create_characters
@character_sprites = []
$game_map.events.values.each do |event|
@character_sprites.push(Sprite_Character.new(@viewport1, event))
end
$game_map.vehicles.each do |vehicle|
@character_sprites.push(Sprite_Character.new(@viewport1, vehicle))
end
$game_player.followers.reverse_each do |follower|
@character_sprites.push(Sprite_Character.new(@viewport2, follower))
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
@map_id = $game_map.map_id
end
end
class Spriteset_Map
def create_characters
@character_sprites = []
$game_map.events.values.each do |event|
@character_sprites.push(Sprite_Character.new(@viewport1, event))
end
$game_map.vehicles.each do |vehicle|
@character_sprites.push(Sprite_Character.new(@viewport1, vehicle))
end
$game_player.followers.reverse_each do |follower|
@character_sprites.push(Sprite_Character.new(@viewport2, follower))
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
@map_id = $game_map.map_id
end
end
作者: sdgn 时间: 2017-5-5 22:28
抱歉 OTZ ...
順便問一下原始行走圖的操作腳本能不能改造成讀取跟某變數一樣數字的型走圖?
例如:WALK[變量].png
[]內的值由我根據需要自由帶入 來變化行走圖(事件設定比較方便)
作者: 魔法丶小肉包 时间: 2017-5-5 23:18
本帖最后由 魔法丶小肉包 于 2017-5-6 11:31 编辑
自由定义主角行走时和停下时的行走图
class Game_Interpreter
def move_p(name_moving,name,a=0,b=0)
if $game_player.moving?
character_name = name_moving
character_index = $game_variables[a]
$game_player.set_graphic(character_name, character_index)
else
character_name = name
character_index = $game_variables[b]
$game_player.set_graphic(character_name, character_index)
end
end
end
class Game_Interpreter
def move_p(name_moving,name,a=0,b=0)
if $game_player.moving?
character_name = name_moving
character_index = $game_variables[a]
$game_player.set_graphic(character_name, character_index)
else
character_name = name
character_index = $game_variables[b]
$game_player.set_graphic(character_name, character_index)
end
end
end
在事件中同样设置并行处理,然后输入事件脚本
move_p(name_moving,name,a,b)
括号内为4个参数,前两个必填,后两个选填,
name_moving:移动的时候显示的行走图文件名
name:停下时显示的行走图文件名
a:移动时显示的行走图文件名的索引所代入的变量ID,不填则为0
b:停下时显示的行走图文件名的索引所代入的变量ID,不填则为0
举例:move_p("evil","Actor1")
自由定义跟随的同伴的行走图
class Game_Interpreter
def move_p(id,name_moving,name,a=0,b=0)
if $game_player.moving?
character_name = name_moving
character_index = $game_variables[a]
$game_player.followers[id].set_graphic(character_name, character_index)
else
character_name = name
character_index = $game_variables[b]
$game_player.followers[id].set_graphic(character_name, character_index)
end
end
end
class Game_Interpreter
def move_p(id,name_moving,name,a=0,b=0)
if $game_player.moving?
character_name = name_moving
character_index = $game_variables[a]
$game_player.followers[id].set_graphic(character_name, character_index)
else
character_name = name
character_index = $game_variables[b]
$game_player.followers[id].set_graphic(character_name, character_index)
end
end
end
事件中脚本:move_p(id,name_moving,name,a=0,b=0)
加了一个参数,其他参数不变
id:跟随同伴的id(注意:跟随同伴id是从0开始的,比如跟在主角后面的第一人,id是0)
举例:move_p(0,"evil","Actor1")
作者: 魔法丶小肉包 时间: 2017-5-6 13:28
跟随同伴的朝向始终与主角保持一致
class Game_Follower < Game_Character
def chase_preceding_character
unless moving?
sx = distance_x_from(@preceding_character.x)
sy = distance_y_from(@preceding_character.y)
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
set_direction($game_player.direction)
end
end
class Game_Follower < Game_Character
def chase_preceding_character
unless moving?
sx = distance_x_from(@preceding_character.x)
sy = distance_y_from(@preceding_character.y)
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
set_direction($game_player.direction)
end
end
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |