Project1

标题: !!!!!怎么让图片移动速度渐变加速?!!!!! [打印本页]

作者: 315038639    时间: 2011-6-12 19:18
标题: !!!!!怎么让图片移动速度渐变加速?!!!!!
本帖最后由 315038639 于 2011-6-12 19:18 编辑

就是类似于在斜坡向下滚筒,一开始很慢,然后越来越快、越来越快……
就是这样,图片移动速度中途提高。dsu_plus_rewardpost_czw
作者: 冰舞蝶恋    时间: 2011-6-12 22:00
似乎……可以这样

移动总路程的1/X,时间,60帧(1秒)
(紧接着上一个指令)移动同上的长度,时间,40帧
同上,20帧
……

数字你可以自己改……嗯,大概吧,提供一下比较废渣的思路
当然用脚本会比较方便
作者: 诡异の猫    时间: 2011-6-13 13:40
本帖最后由 诡异の猫 于 2011-6-13 16:33 编辑
  1. class Game_Picture
  2.   alias ori_ini initialize
  3.   def initialize(number)
  4.     ori_ini(number)
  5.     @time = 0
  6.   end
  7.   
  8.   def move_faster(tx, ty, time)
  9.     @target_x = tx
  10.     @target_y = ty
  11.     @distance_x = tx - @x
  12.     @distance_y = ty - @y
  13.     @time = time
  14.     @all_time = time
  15.   end
  16.   
  17.   alias ori_update update
  18.   def update
  19.     ori_update
  20.     if @time > 0
  21.       mx = (@distance_x / @all_time) * (@all_time - @time) / @time
  22.       my = (@distance_y / @all_time) * (@all_time - @time) / @time
  23.       @x = [@x + mx, @target_x].min if @distance_x > 0
  24.       @x = [@x + mx, @target_x].max if @distance_x < 0
  25.       @y = [@y + my, @target_y].min if @distance_y > 0
  26.       @y = [@y + my, @target_y].max if @distance_y < 0
  27.       @time -= 1
  28.     end
  29.   end
  30. 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
依此类推




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1