幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1451|回复: 5

[RM2K&2K3] 主角B加入后,要怎样才能让他在地图上跟着A四处走?

[复制链接]

30

主题

196

帖子

1977

积分

⑥精研

积分
1977
发表于 2006-6-22 03:31:01 | 显示全部楼层 |阅读模式
因为如果是做一个空白事件页,然后用独立开关的话,尽管主角B已经加入队伍,但地图上看去还是只有主角A一个人在那里晃……怎样才能让主角B跟在A身后晃呢?
回复

使用道具 举报

122

主题

4962

帖子

74

积分

超级版主

Rank: 8Rank: 8

积分
74

声命组银赏

QQ
发表于 2006-6-22 07:46:06 | 显示全部楼层
1、使用事件制作“角色跟随系统”
2、加入“角色跟随脚本”
回复 支持 反对

使用道具 举报

30

主题

477

帖子

5219

积分

⑦老手

积分
5219
发表于 2006-6-22 09:21:13 | 显示全部楼层
用人物跟随那个脚本嘛,RGSS置顶有
回复 支持 反对

使用道具 举报

0

主题

3

帖子

35

积分

②入门

积分
35
QQ
发表于 2006-6-22 21:31:09 | 显示全部楼层
http://www.phylomortis.com/resource/script/scr007.html拿来的

TRAIN_ACTOR_TRANSPARENT_SWITCH = true
TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX = 20
# ------------------------------------
DOWN_LEFT  = 1
DOWN_RIGHT = 3
UP_LEFT    = 7
UP_RIGHT  = 9
JUMP      = 5
# ------------------------------------
class Game_Party_Actor < Game_Character
# ------------------------------------
  def initialize
    super()
    @through = true
  end
# ------------------------------------
  def setup(actor)
    if actor != nil
      @character_name = actor.character_name
      @character_hue = actor.character_hue
    else
      @character_name = ""
      @character_hue = 0
    end
    @opacity = 255
    @blend_type = 0
  end
# ------------------------------------
  def screen_z(height = 0)
    if $game_player.x == @x and $game_player.y == @y
      return $game_player.screen_z(height) - 1
    end
    super(height)
  end
# ------------------------------------  
  def move_down(turn_enabled = true)
    if turn_enabled
      turn_down
    end
    if passable?(@x, @y, Input:OWN)
      turn_down
      @y += 1
    end
  end
# ------------------------------------
  def move_left(turn_enabled = true)
    if turn_enabled
      turn_left
    end
    if passable?(@x, @y, Input:EFT)
      turn_left
      @x -= 1
    end
  end
# ------------------------------------
  def move_right(turn_enabled = true)
    if turn_enabled
      turn_right
    end
    if passable?(@x, @y, Input::RIGHT)
      turn_right
      @x += 1
    end
  end
# ------------------------------------
  def move_up(turn_enabled = true)
    if turn_enabled
      turn_up
    end
    if passable?(@x, @y, Input::UP)
      turn_up
      @y -= 1
    end
  end
# ------------------------------------
  def move_lower_left
    unless @direction_fix
      @direction = (@direction == Input::RIGHT ? Input:EFT : @direction == Input::UP ? Input:OWN : @direction)
    end
    if (passable?(@x, @y, Input:OWN) and passable?(@x, @y + 1, Input:EFT)) or
      (passable?(@x, @y, Input:EFT) and passable?(@x - 1, @y, Input:OWN))
      @x -= 1
      @y += 1
    end
  end
# ------------------------------------
  def move_lower_right
    unless @direction_fix
      @direction = (@direction == Input:EFT ? Input::RIGHT : @direction == Input::UP ? Input:OWN : @direction)
    end
    if (passable?(@x, @y, Input:OWN) and passable?(@x, @y + 1, Input::RIGHT)) or
      (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input:OWN))
      @x += 1
      @y += 1
    end
  end
# ------------------------------------
  def move_upper_left
    unless @direction_fix
      @direction = (@direction == Input::RIGHT ? Input:EFT : @direction == Input:OWN ? Input::UP : @direction)
    end
    if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input:EFT)) or
      (passable?(@x, @y, Input:EFT) and passable?(@x - 1, @y, Input::UP))
      @x -= 1
      @y -= 1
    end
  end
# ------------------------------------
  def move_upper_right
    unless @direction_fix
      @direction = (@direction == Input:EFT ? Input::RIGHT : @direction == Input:OWN ? Input::UP : @direction)
    end
    if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
      (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
      @x += 1
      @y -= 1
    end
  end
# ------------------------------------
  def set_move_speed(move_speed)
    @move_speed = move_speed
  end
end




class Spriteset_Map
# ------------------------------------
  def setup_actor_character_sprites?
    return @setup_actor_character_sprites_flag != nil
  end
# ------------------------------------
  def setup_actor_character_sprites(characters)
    if !setup_actor_character_sprites?
      index_game_player = 0
      @character_sprites.each_index do |i|
        if @character_sprites.character.instance_of?(Game_Player)
          index_game_player = i
          break
        end
      end
      for character in characters.reverse
        @character_sprites.unshift(
          Sprite_Character.new(@viewport1, character)
        )
      end
      @setup_actor_character_sprites_flag = true
    end
  end
end




class Scene_Map
# ------------------------------------
  def setup_actor_character_sprites(characters)
    @spriteset.setup_actor_character_sprites(characters)
  end
end




class Game_Party
# ------------------------------------
  def set_transparent_actors(transparent)
    @transparent = transparent
  end
# ------------------------------------
  def setup_actor_character_sprites
    if @characters == nil
      @characters = []
      for i in 1 .. 4
        @characters.push(Game_Party_Actor.new)
      end
    end
    if @actors_chach == nil
      @actors_chach = []
    end
    if @actors_chach != @actors
      @actors_chach = @actors.clone
      for i in 1 .. 4
        @characters[i - 1].setup(actors)
      end
    end
    if $scene.instance_of?(Scene_Map)
      $scene.setup_actor_character_sprites(@characters)
    end
  end
# ------------------------------------
  def update_party_actors
    setup_actor_character_sprites
    transparent = $game_player.transparent
    if transparent == false
      if TRAIN_ACTOR_TRANSPARENT_SWITCH
        transparent = $game_switches[TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX]
      else
        transparent = $game_player.transparent
      end
    end
    for character in @characters
      character.transparent = transparent
      character.set_move_speed($game_player.get_move_speed)
      character.update
    end
  end
# ------------------------------------
  def moveto_party_actors( x, y )
    setup_actor_character_sprites
    for character in @characters
      character.moveto( x, y )
    end
    if @move_list == nil
      @move_list = []
    end
    for i in 0 .. 10
      @move_list = nil
    end
  end
  def move_party_actors
    if @move_list == nil
      @move_list = []
      for i in 0 .. 10
        @move_list = nil
      end
    end
    @move_list.each_index do |i|
      if @characters != nil
        case @move_list.type
          when Input:OWN
            @characters.move_down(@move_list.args[0])
          when Input:EFT
            @characters.move_left(@move_list.args[0])
          when Input::RIGHT
            @characters.move_right(@move_list.args[0])
          when Input::UP
            @characters.move_up(@move_list.args[0])
          when DOWN_LEFT
            @characters.move_lower_left
          when DOWN_RIGHT
            @characters.move_lower_right
          when UP_LEFT
            @characters.move_upper_left
          when UP_RIGHT
            @characters.move_upper_right
          when JUMP
            @characters.jump(@move_list.args[0],@move_list.args[1])
        end
      end
    end
  end




class Move_List_Element
# ------------------------------------
    def initialize(type,args)
      @type = type
      @args = args
    end
    def type() return @type end
    def args() return @args end
  end
# ------------------------------------
  def add_move_list(type,*args)
    @move_list.unshift(Move_List_Element.new(type,args)).pop
  end
# ------------------------------------
  def move_down_party_actors(turn_enabled = true)
    move_party_actors
    add_move_list(Input::DOWN,turn_enabled)
  end
# ------------------------------------
  def move_left_party_actors(turn_enabled = true)
    move_party_actors
    add_move_list(Input::LEFT,turn_enabled)
  end
# ------------------------------------
  def move_right_party_actors(turn_enabled = true)
    move_party_actors
    add_move_list(Input::RIGHT,turn_enabled)
  end
# ------------------------------------
  def move_up_party_actors(turn_enabled = true)
    move_party_actors
    add_move_list(Input::UP,turn_enabled)
  end
# ------------------------------------
  def move_lower_left_party_actors
    move_party_actors
    add_move_list(DOWN_LEFT)
  end
# ------------------------------------
  def move_lower_right_party_actors
    move_party_actors
    add_move_list(DOWN_RIGHT)
  end
# ------------------------------------
  def move_upper_left_party_actors
    move_party_actors
    add_move_list(UP_LEFT)
  end
# ------------------------------------
  def move_upper_right_party_actors
    move_party_actors
    add_move_list(UP_RIGHT)
  end
# ------------------------------------
  def jump_party_actors(x_plus, y_plus)
    move_party_actors
    add_move_list(JUMP,x_plus, y_plus)
  end
end




module Game_Player_Module
# ------------------------------------
  def update
    $game_party.update_party_actors
    super
  end
# ------------------------------------
  def moveto( x, y )
    super
    $game_party.moveto_party_actors( x, y )
  end
# ------------------------------------
  def move_down(turn_enabled = true)
    if passable?(@x, @y, Input::DOWN)
      $game_party.move_down_party_actors(turn_enabled)
    end
    super(turn_enabled)
  end
# ------------------------------------
  def move_left(turn_enabled = true)
    if passable?(@x, @y, Input::LEFT)
      $game_party.move_left_party_actors(turn_enabled)
    end
    super(turn_enabled)
  end
# ------------------------------------
  def move_right(turn_enabled = true)
    if passable?(@x, @y, Input::RIGHT)
      $game_party.move_right_party_actors(turn_enabled)
    end
    super(turn_enabled)
  end
# ------------------------------------
  def move_up(turn_enabled = true)
    if passable?(@x, @y, Input::UP)
      $game_party.move_up_party_actors(turn_enabled)
    end
    super(turn_enabled)
  end
# ------------------------------------
  def move_lower_left
    if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
      (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
      $game_party.move_lower_left_party_actors
    end
    super
  end
# ------------------------------------
  def move_lower_right
    if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
      (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
      $game_party.move_lower_right_party_actors
    end
    super
  end
# ------------------------------------
  def move_upper_left
    if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
      (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
      $game_party.move_upper_left_party_actors
    end
    super
  end
# ------------------------------------
  def move_upper_right
    if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
      (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
      $game_party.move_upper_right_party_actors
    end
    super
  end
# ------------------------------------
  def jump(x_plus, y_plus)
    new_x = @x + x_plus
    new_y = @y + y_plus
    if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
      $game_party.jump_party_actors(x_plus, y_plus)
    end
    super(x_plus, y_plus)
  end
# ------------------------------------
def get_move_speed
    return @move_speed
  end
end

class Game_Player
  include Game_Player_Module
end



插入这个脚本~[s:2]
One world One dream One RPG~^_^
回复 支持 反对

使用道具 举报

30

主题

196

帖子

1977

积分

⑥精研

积分
1977
 楼主| 发表于 2006-6-22 23:44:26 | 显示全部楼层
多谢多谢,已经解决这个问题了~~~~
回复 支持 反对

使用道具 举报

10

主题

69

帖子

1659

积分

⑥精研

论坛游人

积分
1659
发表于 2006-7-13 22:48:50 | 显示全部楼层

[求助]Re:主角B加入后,要怎样…………

抱歉!顶下旧帖问个情况!
用上面的方法达到跟随效果了!可是队伍中队长的步行图被固定为第1个角色的样子了!!
如果把本来是队长的第1人换到第2位就会发生现队长步行和原队长一样的情况!第1 2位都是一个样子的步行图!这问题怎么办??

感觉好象不难解决!指定一下做为队长的步行图为队列中第一个角色就好!就是不知道改在哪改!!
图:
当原队长换到2 3 位时……

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-28 18:23 , Processed in 0.013228 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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