赞 | 0 |
VIP | 47 |
好人卡 | 14 |
积分 | 1 |
经验 | 6342 |
最后登录 | 2015-10-31 |
在线时间 | 466 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 466 小时
- 注册时间
- 2006-2-25
- 帖子
- 1863
|
本帖最后由 诡异の猫 于 2011-6-13 16:33 编辑
- class Game_Picture
- alias ori_ini initialize
- def initialize(number)
- ori_ini(number)
- @time = 0
- end
-
- def move_faster(tx, ty, time)
- @target_x = tx
- @target_y = ty
- @distance_x = tx - @x
- @distance_y = ty - @y
- @time = time
- @all_time = time
- end
-
- alias ori_update update
- def update
- ori_update
- if @time > 0
- mx = (@distance_x / @all_time) * (@all_time - @time) / @time
- my = (@distance_y / @all_time) * (@all_time - @time) / @time
- @x = [@x + mx, @target_x].min if @distance_x > 0
- @x = [@x + mx, @target_x].max if @distance_x < 0
- @y = [@y + my, @target_y].min if @distance_y > 0
- @y = [@y + my, @target_y].max if @distance_y < 0
- @time -= 1
- end
- end
- end
复制代码 使用方法:
比如地图上显示了1号图片
则在事件里写脚本 $game_map.screen.pictures[1].move_faster(x, y, time)
x, y 表示你的目标坐标 就是想把图片移动到哪里
time表示你将图片由原来位置移动到xy所需要的时间
举个例子吧
例如你在地图上显示了1号图片 原坐标是0,0
然后你执行了$game_map.screen.pictures[1].move_fatser(500, 400, 100)
就是用100帧时间(正常情况下60帧=1秒)把1号图片从0,0加速移动到500,400
mx和my的算法有误,待高人修改,有事先出去了- -
此时 在第一帧的时候
图片X坐标的移动速度mx = (500/100) * (100 - 100) / 100(计算结果舍弃小数部分)
在第二帧的时候图片
图片X坐标的移动速度mx = (500/100) * (100 - 99) / 99
依此类推 |
|