搜索附件  
同能RPG制作大师 附件中心 同能RM技术讨论区 RPG Maker XP 讨论区 矩形位图转换梯形: 11.rar

矩形位图转换梯形: 11.rar

 

矩形位图转换梯形:
其实很烂的算法,以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在线咨询功能删除,谢谢。
         同一主题附件:
    d1.jpg
    11.rar (3.58 MB)

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

GMT+8, 2024-9-21 16:38 , Processed in 0.037582 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部