设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: chinalfm
打印 上一主题 下一主题

[已经解决] 如何在大地图上让一个怪追着另一个怪打

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
40 小时
注册时间
2011-3-28
帖子
46
11
 楼主| 发表于 2011-4-7 00:18:11 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
98 小时
注册时间
2011-3-20
帖子
243
12
发表于 2011-4-7 12:07:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
40 小时
注册时间
2011-3-28
帖子
46
13
 楼主| 发表于 2011-4-7 17:54:20 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
98 小时
注册时间
2011-3-20
帖子
243
14
发表于 2011-4-7 19:38:15 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
40 小时
注册时间
2011-3-28
帖子
46
15
 楼主| 发表于 2011-4-8 11:33:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
98 小时
注册时间
2011-3-20
帖子
243
16
发表于 2011-4-8 16:19:40 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
246 小时
注册时间
2008-8-6
帖子
99
17
发表于 2011-4-9 16:07:49 | 只看该作者
我发个脚本版的吧。

在 Main 之前建立脚本页,挺入以下:
  1. class Game_Character

  2.   attr_accessor :move_target        # 移动的目标事件

  3.   # 启动移动到目标
  4.   def startMoveTo(event)
  5.     @move_target = event
  6.     @move_type = 4
  7.   end

  8.   #--------------------------------------------------------------------------
  9.   # ● 计算距离事件的横向距离
  10.   #--------------------------------------------------------------------------
  11.   def distance_x_from_event(event)
  12.     sx = @x - event.x
  13.     if $game_map.loop_horizontal?         # 横向循环的场合
  14.       if sx == 1 - $game_map.width
  15.         sx += $game_map.width
  16.       elsif sx.abs > $game_map.width / 2  # 是否大于地图宽度
  17.         sx -= $game_map.width             # 减除地图宽度
  18.       end
  19.     end
  20.     return sx
  21.   end

  22.   #--------------------------------------------------------------------------
  23.   # ● 计算距离事件的纵向距离
  24.   #--------------------------------------------------------------------------
  25.   def distance_y_from_event(event)
  26.     sy = @y - event.y
  27.     if $game_map.loop_vertical?           # 纵像循环的场合
  28.       if sy == 1 - $game_map.height
  29.         sy += $game_map.height
  30.       elsif sy.abs > $game_map.height / 2 # 是否大于地图高度
  31.         sy -= $game_map.height            # 减除地图高度
  32.       end
  33.     end
  34.     return sy
  35.   end

  36.   #--------------------------------------------------------------------------
  37.   # ● 接近事件
  38.   #--------------------------------------------------------------------------
  39.   def move_toward_event(event)
  40.     sx = distance_x_from_event(event)
  41.     sy = distance_y_from_event(event)
  42.     sx += $game_map.width * 2 if $game_map.loop_horizontal? and sx < - $game_map.width  and sx > - $game_map.width * 2
  43.     sy += $game_map.height * 2 if $game_map.loop_vertical? and sy < - $game_map.height  and sy > - $game_map.height * 2
  44.     if sx != 0 or sy != 0
  45.       if sx.abs > sy.abs                  # 横向距离较大
  46.         sx > 0 ? move_left : move_right   # 优先往左右走
  47.         if @move_failed and sy != 0
  48.           sy > 0 ? move_up : move_down
  49.         end
  50.       else                                # 纵向距离较大
  51.         sy > 0 ? move_up : move_down      # 优先往上下走
  52.         if @move_failed and sx != 0
  53.           sx > 0 ? move_left : move_right
  54.         end
  55.       end
  56.     end
  57.   end

  58.   #--------------------------------------------------------------------------
  59.   # ● 更新画面 (本身行动)
  60.   #--------------------------------------------------------------------------
  61.   def update_self_movement
  62.     if @stop_count > 30 * (5 - @move_frequency)
  63.       case @move_type
  64.       when 1;  move_type_random
  65.       when 2;  move_type_toward_player
  66.       when 3;  move_type_custom
  67.       when 4:  move_toward_event(@move_target)
  68.       end
  69.     end
  70.   end

  71. end
复制代码
然后,打开工程,建立事件 001 和 002 设置如图所示

事件 001:追其他事件的事件


其中的脚本为:
  1. me = get_character(0)                # 获取当前事件
  2. target = $game_variables[1]          # 获取目标(在1号变量中)
  3. me.startMoveTo(target) if target != nil and target.is_a?(Game_Character)
复制代码
再建立事件 002 : 被追的事件


开始后,与事件 002 对话就是了。这里用到 1号变量1号开关  ,你可以自己改


PS: 我要好人卡

点评

可能有些细节与你的具体情况不符,但那都可以通过事件来完成。  发表于 2011-4-9 16:08
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-11 23:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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