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

Project1

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

[已经解决] 【 浮动效果 】 求 指 教

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
帖子
305
跳转到指定楼层
1
发表于 2013-8-9 21:37:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Ceopal 于 2013-8-10 22:08 编辑

    发现↑ ↓图片的话,像是撞到天花板与地板似的

    如果要写浮动效果,要带入加速度么

    怎么代入呢?没想好……求指教





@八月桑 就是当位置越上面、越下面时,其运动速度越慢,位置在中间时,浮动运动速度最快

@沙漠点灰  有虫,y值从50 move to 400,puts .y,返回350……
      效果:开始到结束,速度看上去分成了两个值
  

点评

没有啊= =效果就是减速到达目的地  发表于 2013-8-10 16:07
木有弄明白  发表于 2013-8-10 16:03

Lv1.梦旅人

天才琪露诺

梦石
0
星屑
54
在线时间
276 小时
注册时间
2013-6-24
帖子
1741
2
发表于 2013-8-9 23:22:29 | 只看该作者
浮动是怎样的效果?能说清楚点么!

说人家是笨蛋的自己才是笨蛋,我最强了,最最最强!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
3
发表于 2013-8-9 23:41:46 手机端发表。 | 只看该作者
三角函数应该就行了

评分

参与人数 1星屑 +80 收起 理由
Sion + 80 感谢帮忙

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
4
发表于 2013-8-10 02:46:37 | 只看该作者
本帖最后由 沙漠点灰 于 2013-8-10 16:08 编辑

lz说的是缓动的话,可以试试:
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Sprite
  4. #------------------------------------------------------------------------------
  5. #  RGSS
  6. #==============================================================================
  7.  
  8. class Sprite
  9.         #--------------------------------------------------------------------------
  10.         # ● 移动到
  11.         #--------------------------------------------------------------------------
  12.         def move_to(x, y, zoom, duration, opa=nil)
  13.                 @old_x = self.x
  14.                 @old_y = self.y
  15.                 @target_x = (x ? x : self.x)
  16.                 @target_y = (y ? y : self.y)
  17.                 @old_zoom = self.zoom_x
  18.                 @target_zoom = (zoom ? zoom : self.zoom_x)
  19.                 @target_opa = (opa ? opa : @target_opa)
  20.                 @old_opa = self.opacity
  21.                 @duration = duration
  22.                 @duration_full = duration.to_f
  23.         end
  24.         #--------------------------------------------------------------------------
  25.         # ● 刷新移动
  26.         #--------------------------------------------------------------------------
  27.         def move_update
  28.                 return true if @duration.nil? or @duration <= 0
  29.                 @duration -= 1
  30.                 var = 1-Math.f(@duration/@duration_full+1)
  31.                 self.x = (@old_x + (@target_x-@old_x) *var+0.5).to_i
  32.                 self.y = (@old_y + (@target_y-@old_y) *var+0.5).to_i
  33.                 self.zoom_x = @old_zoom + (@target_zoom-@old_zoom) *var
  34.                 self.zoom_y  = self.zoom_x
  35.                 self.opacity = (@old_opa + (@target_opa - @old_opa)*var+0.5).to_i if @target_opa
  36.                 false
  37.         end
  38. end
  39. def Math.f(x)
  40.         return self.f(x+2) if x < 0
  41.         return self.f(x-2) if x >= 2
  42.         (x-1)**2
  43. end

sprite_obj.move_to(目标X坐标[nil时不改变], 目标Y坐标[nil时不改变], 目标放大率[nil时不改变], 移动帧数[, 目标不透明度(nil时不改变)])

每帧需要调用sprite_obj.move_update
这个效果是刚开始(改变速度)比较快,越接近目标,(改变速度)越慢


将Math.f(x)改为三角(Sin)函数的话,能做成开始和结束比较慢,中间比较快。
PS:
Math.f(x)定义域为[0, 2),值域为[0, 1]
PS2:
自己开始时也用三角函数,但是后来就直接二次函数了,
毕竟效果又好计算又快


-----------------------------------------------------
@end55rpg
(x-1)**2换成1-(x-1)**2就行了

点评

有木有先慢后快的  发表于 2013-8-10 08:46

评分

参与人数 1梦石 +1 收起 理由
Sion + 1 认可答案

查看全部评分

>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 22:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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