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

Project1

 找回密码
 注册会员
搜索

( • ̀ω•́ )能不能做到事件分别从X或Y轴接近主角呢?

查看数: 2060 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-7-17 18:58

正文摘要:

(,,• ₃ •,,) 想做个酱紫的追逐戏,不是普通RM种跟着主角跑, (,,• ₃ •,,) 主角被汽车追,所以车扭来扭曲不是很奇怪嘛? (,,• ₃ •,,) 想做个车先运动的X轴平行于主角,然后Y轴距离缩短冲过来, (,,• ₃ •, ...

回复

恐惧剑刃 发表于 2014-7-17 19:24:29
本帖最后由 恐惧剑刃 于 2014-7-18 10:38 编辑

示例 创建任意一个事件
移动路线中脚本 toward(nil, $game_player.y)  看看效果吧?主动接近主角的Y坐标

脚本有点小问题,习惯性把变量命名为 ax,ay 但下方需要的变量名称可不是这么写的~
  1. #==============================================================================
  2. # ■ Game_Character (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理角色的类。本类作为 Game_Player 类与 Game_Event
  5. # 类的超级类使用。
  6. #==============================================================================

  7. class Game_Character
  8.   #--------------------------------------------------------------------------
  9.   # ● 接近
  10.   #--------------------------------------------------------------------------
  11.   # 使用方法 :
  12.   # 事件=>设置移动路线=>脚本=>输入=>toward(目标的X坐标, 目标的Y坐标)
  13.   # 可以单方向接近,只需把“目标的X坐标”或者“目标的Y坐标”传nil就可以
  14.   #--------------------------------------------------------------------------
  15.   # 目标的X既可以是主角也可以是事件甚至可以是纯坐标
  16.   # 主角的X坐标 $game_player.x
  17.   # 主角的Y坐标 $game_player.y
  18.   # 事件的X坐标 $game_map.events[事件的id].x
  19.   # 事件的T坐标 $game_map.events[事件的id].y
  20.   #--------------------------------------------------------------------------
  21.   def toward(x = nil, y = nil)
  22.     return if x == nil and y == nil
  23.     if x == nil
  24.       # 求坐标差
  25.       sy = @y - y
  26.       return if sy == 0
  27.       sy > 0 ? move_up : move_down
  28.     elsif y == nil
  29.       # 求坐标差
  30.       sx = @x - x
  31.       return if sx == 0
  32.       sx > 0 ? move_left : move_right
  33.     else
  34.       # 求坐标差
  35.       sx = @x - x
  36.       sy = @y - y
  37.       
  38.       # 绝对值
  39.       abs_sx = sx.abs
  40.       abs_sy = sy.abs
  41.       
  42.       return if abs_sx <= 1 and abs_sy <= 1
  43.       
  44.       # 横距离与纵距离相等的情况下
  45.       if abs_sx == abs_sy
  46.         # 随机将边数增加 1
  47.         rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  48.       end
  49.       # 横侧距离长的情况下
  50.       if abs_sx > abs_sy
  51.         # 左右方向优先。向主角移动
  52.         sx > 0 ? move_left : move_right
  53.         if not moving? and sy != 0
  54.           sy > 0 ? move_up : move_down
  55.         end
  56.       # 竖侧距离长的情况下
  57.       else
  58.         # 上下方向优先。向主角移动
  59.         sy > 0 ? move_up : move_down
  60.         if not moving? and sx != 0
  61.           sx > 0 ? move_left : move_right
  62.         end
  63.       end
  64.     end
  65.    
  66.    
  67.   end
  68. end
复制代码

点评

(。•ˇ‸ˇ•。)虽然很正确但是却还是不知道怎么使用的说  发表于 2014-7-17 19:45

评分

参与人数 2星屑 +166 收起 理由
︶ㄣ牛排ぶ + 100 认可答案
MeowSnow + 66 (ΦωΦ)多谢大触

查看全部评分

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

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

GMT+8, 2024-9-21 22:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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