| 赞 | 54 |
| VIP | |
| 好人卡 | |
| 积分 | 46 |
| 经验 | |
| 最后登录 | 2026-9-12 |
| 在线时间 | 1207 小时 |
- 梦石
- 0
- 星屑
- 4623
- 在线时间
- 1207 小时
- 注册时间
- 2016-4-7
- 回帖
- 944

|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 shitake 于 2016-5-30 18:44 编辑
偶然看到这篇帖子 就试着在RM里折腾了一下
效果:
帖子中的范例:

果然以比较简直弱爆了
不知道为啥总是调不出他的那种效果。。。两个时间间隔都调试过。。。
还有就是RM里没有love2d的BlendMode这类东西。。。所以我是直接对bitmap动的手。。。然而重叠部分会特别鬼。
不过仔细看了下 downwell 的尾迹其实也有重叠。
还有最后那个酷炫的拉伸效果。。。。试了半天没成功ORZ
downwell原版:

范例工程:
Downwell.rar
(1.28 MB, 下载次数: 67)
核心代码:[pre lang="ruby"]class Obj
attr_accessor :bitmap,:x,:y
def initialize(x, y, bitmap)
@x = x
@y = y
@old_x = @x
@old_y = @y
@bitmap = bitmap
@sprite = Sprite.new
@sprite.bitmap = @bitmap
@sprite.ox = @sprite.width / 2
@sprite.oy = @sprite.height / 2
@timer = Timer.new
@timer.every(0.08) do
trail = Trail.new(self.x, self.y, @sprite.z, @bitmap)
size = rand(20) / 100.0
trail.sprite.angle = (@y - @old_y != 0 ? Math.atan((@x - @old_x) / (@y - @old_y)) : 0) * 180 / Math::PI
@old_x = @x
@old_y = @y
trail.sprite.zoom_x += size
trail.sprite.zoom_y += size
end
end
def map(old_value, old_min, old_max, new_min, new_max)
new_min + (new_max - new_min) * (old_value - old_min) / (old_max - old_min)
end
def move(x, y)
@x = x
@y = y
@sprite.x = x
@sprite.y = y
end
def set_pos
x, y = Input.mouse_pos
return if x < 0 || y < 0
move(x, y)
end
def dispose
@sprite.dispose
@end = true
end
def update
return if @end
set_pos
end
end
class Trail
attr_reader :sprite
def initialize(x, y, z, bitmap)
@sprite = Sprite.new
@sprite.bitmap = subtract(bitmap)
@sprite.ox = @sprite.width / 2
@sprite.oy = @sprite.height / 2
@sprite.x = x
@sprite.y = y
@sprite.z = z - 1
@sprite.color = Color.new(255, 0, 0)
@timer = Timer.new
@timer.every(0.01) do
self.sprite.opacity -= 5
self.sprite.zoom_x -= 0.08
self.sprite.zoom_y -= 0.08
end
@timer.after(0.12){self.dispose}
end
def subtract(src_bitmap)
last = 0
bitmap = src_bitmap.clone
bitmap.width.times do |i|
if i - last == 4
bitmap.clear_rect(0, i, bitmap.width, 2)
last = i
end
end
bitmap
end
def dispose
@timer.dispose
@sprite.dispose
end
end
[/pre]
里面的 Timer 在这里--› http://blog.shitake.me/?p=24
如果是要实现downwell 完全一样的效果 实际上修改一下上边的代码 删掉缩放和旋转,增大尾迹生成间隔就好。
另外,附件里面有一个鼠标脚本 来自 wxruby。
|
评分
-
查看全部评分
|