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

Project1

 找回密码
 注册会员
搜索
查看: 5013|回复: 5
打印 上一主题 下一主题

[RMVA发布] 精灵的移动

[复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
841 小时
注册时间
2010-8-11
帖子
1135
跳转到指定楼层
1
 楼主| 发表于 2013-3-2 19:27:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

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

x
其实这是为我的菜单写的。
不喜勿喷……
动画……大概截不了图吧……
其实这只是个很简单的脚本而已(怎么总感觉是供学习用的……)
好吧,我直接放上脚本:
  1. #==============================================================================
  2. # * 精灵的(匀加速)移动 by 945127391
  3. #------------------------------------------------------------------------------
  4. #   说明:
  5. #   ① 指令:
  6. #      sprite.start_move              # 开始移动
  7. #      sprite.suspend_move            # 暂停移动
  8. #      sprite.stop_move               # 停止移动
  9. #      sprite.set_move_goal(x, y)     # 设置移动目标
  10. #             x - 目标X坐标
  11. #             y - 目标Y坐标
  12. #      sprite.set_move_velocity(iv_x, iv_y, ac_x, ac_y) # 设定移动速度
  13. #             iv_x - 横方向移动的初始速度
  14. #             iv_y - 纵方向移动的初始速度
  15. #             ac_x - 横方向移动的加速度
  16. #             ac_y - 纵方向移动的加速度
  17. #   ② 注意事项
  18. #      1.请先设置目标与速度再使用开始移动指令;
  19. #      2.加速度为0时为匀速运动;
  20. #      3.除了用停止移动指令会导致精灵停止移动以外,还有以下两种情况可能会导致精灵停止
  21. #        移动:
  22. #        - 速度小于或等于0
  23. #        - 到达目标
  24. #==============================================================================
  25. class Sprite
  26.   #----------------------------------------------------------------------------
  27.   # * 重命名方法
  28.   #----------------------------------------------------------------------------
  29.   alias old_ini initialize
  30.   alias old_upd update
  31.   #----------------------------------------------------------------------------
  32.   # * 初始化
  33.   #----------------------------------------------------------------------------
  34.   def initialize(viewport = nil)
  35.     old_ini(viewport)
  36.     # 移动初始化
  37.     @move_start = false
  38.     @move_goal = {:x => self.x, :y => self.y} # 目标点
  39.     @move_ivelocity = {:x => 0, :y => 0}      # 初始速度
  40.     @move_acceleration = {:x => 0, :y => 0}   # 加速度
  41.     @move_iframe_count = 0                    # 开始移动帧数
  42.   end
  43.   #----------------------------------------------------------------------------
  44.   # * 更新画面
  45.   #----------------------------------------------------------------------------
  46.   def update
  47.     old_upd
  48.     # 更新移动
  49.     if @move_start
  50.       # 横方向移动
  51.       if @move_goal[:x] != self.x
  52.         now_velocity = @move_ivelocity[:x] + (Graphics.frame_count - @move_iframe_count) * @move_acceleration[:x]
  53.         if now_velocity > 0
  54.           if (@move_goal[:x] - self.x).abs < now_velocity
  55.             self.x = @move_goal[:x]
  56.           else
  57.             if @move_goal[:x] > self.x
  58.               self.x += now_velocity
  59.             elsif @move_goal[:x] < self.x
  60.               self.x -= now_velocity
  61.             end
  62.           end
  63.         else @move_goal[:x] = self.x
  64.         end
  65.       end
  66.       # 纵方向移动
  67.       if @move_goal[:y] != self.y
  68.         now_velocity = @move_ivelocity[:y] + (Graphics.frame_count - @move_iframe_count) * @move_acceleration[:y]
  69.         if now_velocity > 0
  70.           if (@move_goal[:y] - self.y).abs < now_velocity
  71.             self.y = @move_goal[:y]
  72.           else
  73.             if @move_goal[:y] > self.y
  74.               self.y += now_velocity
  75.             elsif @move_goal[:y] < self.y
  76.               self.y -= now_velocity
  77.             end
  78.           end
  79.         else @move_goal[:y] = self.y
  80.         end
  81.       end
  82.     end
  83.   end
  84.   #----------------------------------------------------------------------------
  85.   # * 设定移动终点
  86.   #----------------------------------------------------------------------------
  87.   def set_move_goal(x, y)
  88.     @move_goal = {:x => x, :y => y}
  89.   end
  90.   #----------------------------------------------------------------------------
  91.   # * 设定移动速度
  92.   #----------------------------------------------------------------------------
  93.   def set_move_velocity(iv_x, iv_y, ac_x, ac_y)
  94.     @move_ivelocity = {:x => iv_x, :y => iv_y}
  95.     @move_acceleration = {:x => ac_x, :y => ac_y}
  96.   end
  97.   #----------------------------------------------------------------------------
  98.   # * 开始移动
  99.   #----------------------------------------------------------------------------
  100.   def start_move
  101.     @move_start = true
  102.     @move_iframe_count = Graphics.frame_count
  103.   end
  104.   #----------------------------------------------------------------------------
  105.   # * 暂停移动
  106.   #----------------------------------------------------------------------------
  107.   def suspend_move
  108.     @move_start = false
  109.   end
  110.   #----------------------------------------------------------------------------
  111.   # * 停止移动
  112.   #----------------------------------------------------------------------------
  113.   def stop_move
  114.     @move_start = false
  115.     @move_goal = {:x => self.x, :y => self.y}
  116.   end
  117. end
复制代码

点评

截个动图示范下效果应该会不错=-=  发表于 2013-7-30 19:27

Lv1.梦旅人

梦石
0
星屑
50
在线时间
164 小时
注册时间
2011-8-15
帖子
238
2
发表于 2013-3-8 18:11:49 | 只看该作者
能不能为脚本盲着想下....请加个 用处说明 和 使用说明 可以么?咱可是纯脚本盲.....

点评

使用在开头的注释里。  发表于 2013-3-9 00:34
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2013-2-1
帖子
108
3
发表于 2013-3-8 19:00:48 | 只看该作者
干什么用的?是让脚本里的精灵能移动的嘛?

点评

↓哦。  发表于 2013-3-9 20:09
具体地说,是让精灵显示移动的动画。  发表于 2013-3-9 00:35
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
131 小时
注册时间
2012-7-3
帖子
121
4
发表于 2013-3-16 23:57:54 | 只看该作者
你让我想到物理课了= =
不过还是挺实用的
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
290
在线时间
296 小时
注册时间
2012-1-3
帖子
19
5
发表于 2013-4-5 15:41:42 | 只看该作者
哪里来的精灵咧?

点评

自己创建……  发表于 2013-4-5 23:03
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (超级版主)

嗜谎者

梦石
2
星屑
16547
在线时间
3892 小时
注册时间
2010-9-12
帖子
9635

极短24评委极短23评委极短22评委极短21评委开拓者

6
发表于 2013-7-30 16:19:37 | 只看该作者
中高端脚本不给那些新手玩家解释一下他们不知道有什么用的啦wwwww

点评

问题是要怎么解释……从精灵开始什么的估计能写一篇教程了= =  发表于 2013-7-30 16:38
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 13:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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