Project1
标题:
矩形位图转换梯形
[打印本页]
作者:
灵魂の补给
时间:
2011-8-20 08:19
标题:
矩形位图转换梯形
其实很烂的算法,以Y坐标建立X个精灵类的分割图片,2张时FPS:25(内存:128MB)
4.PNG
(156.69 KB, 下载次数: 38)
下载附件
保存到相册
2011-8-20 08:17 上传
下载地址:
11.rar
(3.58 MB, 下载次数: 85)
2011-8-20 08:19 上传
点击文件名下载附件
#==============================================================================
# ■ Sprite_Draw_3D
# 中文名:梯形(扭曲)位图
# 作者:END66RPG
# 原理:以X坐标分成WIDTH个精灵位图,每个精灵进行Y轴缩小.
# 因此,图片太大会较卡.可以改成1个SPRITE这样不卡,不过大概不行.
#------------------------------------------------------------------------------
# mirror = 左(false)右(true)
# name = 图片名字
#==============================================================================
class Sprite_Draw_3D < Sprite
#--------------------------------------------------------------------------
# ● 初始化对像
# viewport : 显示端口
#--------------------------------------------------------------------------
def initialize(viewport,mirror=false,name="法帝斯回忆2")
super(viewport)
# 将活动块设置为可见
@draw_name = name
self.visible = false
# 设置活动块的坐标
self.x = 0
self.y = 40
self.z = 99
self.bitmap = RPG::Cache.picture(@draw_name)
self.mirror = mirror
if mirror == false
for i in 0..self.bitmap.width
i = i
eval(
"
@p#{i} = Sprite.new(viewport);
@p#{i}.bitmap = RPG::Cache.picture(@draw_name);
@p#{i}.x = self.x+i;
@p#{i}.z = self.z;
@p#{i}.y = self.y-(i.to_f/5);
@p#{i}.src_rect.set(i, 0, 1, self.bitmap.height);
@p#{i}.zoom_y = i.to_f / self.bitmap.width.to_f + 0.2
"
)
#p""
end
else
i = -1
while i != self.bitmap.width
i += 1
eval(
"
@p#{i} = Sprite.new(viewport);
@p#{i}.bitmap = RPG::Cache.picture(@draw_name);
@p#{i}.x = self.x+i+220;
@p#{i}.z = self.z;
@p#{i}.y = self.y+(i.to_f/5)-22;
@p#{i}.src_rect.set(i, 0, 1, self.bitmap.height);
@p#{i}.zoom_y = (self.bitmap.width-i).to_f / self.bitmap.width.to_f + 0.2
"
)
end
end
# update
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
for i in 0..self.bitmap.width
eval(
"
@p#{i}.bitmap.dispose
"
)
end
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 更新图片
#--------------------------------------------------------------------------
def update(name)
@draw_name = name
for i in 0..self.bitmap.width
eval(
"
@p#{i}.bitmap = RPG::Cache.picture(@draw_name)
"
)
end
end
end
复制代码
作者:
黑崎一护
时间:
2011-8-20 09:21
好神奇的脚本,可以用来做时空扭曲的场景啊...
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1