查看: 94|回复: 0

[转载发布] 矩形位图转换梯形

[复制链接]
  • TA的每日心情
    开心
    昨天 15:12
  • 签到天数: 36 天

    连续签到: 2 天

    [LV.5]常住居民I

    2027

    主题

    32

    回帖

    7235

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5160
    OK点
    16
    积分
    7235
    发表于 同元一千年八月二日(秋) | 显示全部楼层 |阅读模式
    其实很烂的算法,以Y坐标建立X个精灵类的分割图片,2张时FPS:25(内存:128MB)

    下载地址:
    1. #==============================================================================# ■ 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  endend复制代码
    复制代码
                 本帖来自P1论坛作者灵魂の补给,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=203077  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-10 07:17 , Processed in 0.062874 second(s), 44 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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