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

Project1

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

[已经解决] 如何自定义图片的视口

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
跳转到指定楼层
1
发表于 2023-2-23 20:36:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
如何修改特定图片的视口位置?

默认图片视口为2

#==============================================================================
# ■ Spriteset_Map
#------------------------------------------------------------------------------
#  处理地图画面活动块和元件的类。本类在
# Scene_Map 类的内部使用。
#==============================================================================

class Spriteset_Map


    # 生成图片
    @picture_sprites = []
    for i in 1..50
      @picture_sprites.push(Sprite_Picture.new(@viewport2,$game_screen.pictures[i]))
    end

我想修改成当图片名为“队标”时,视口变为@viewport1

点评

没记错的话,应该是无法修改的。只能想别的办法做  发表于 2023-2-26 17:59

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

4
发表于 2023-4-5 02:57:13 | 只看该作者
2楼菜刀的方法是最方便的,直接让50号图片的viewport改为@viewport1。你以后操作的时候选择50号图片就可以了。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7760
在线时间
1337 小时
注册时间
2015-8-15
帖子
751
3
发表于 2023-3-30 16:40:31 | 只看该作者
本帖最后由 金芒芒 于 2023-3-30 16:43 编辑

https://rpg.blue/thread-387870-1-1.html 里面有


RUBY 代码复制
  1. #==============================================================================
  2. # ■  RMXP
  3.   #--------------------------------------------------------------------------
  4.   #  作者:刺夜之枪
  5. #==============================================================================
  6. #==============================================================================
  7. # ■ Sprite_Character
  8. #==============================================================================
  9.  
  10. class Sprite_Character < RPG::Sprite
  11.   #--------------------------------------------------------------------------
  12.   # ● 参数设置 正太君改
  13.   #--------------------------------------------------------------------------
  14.   # 设置图片文件名.不想要底图就让底图完全透明或设置为 ""
  15.   # 图片放在 Graphics/Pictures/ 文件夹下
  16.   TeamTagFileName = "wodeshib"
  17.   # 设置显示友军标记的开关号
  18.   TeamTagBar = 10
  19.  
  20.   #--------------------------------------------------------------------------
  21.   # ● 初始化对像
  22.   #--------------------------------------------------------------------------
  23.   alias hzhj_old_init_make_tag initialize
  24.   def initialize(*args)
  25.     @team_tag_sprite = Sprite.new(args[0])
  26.     @tags_sprites = []
  27.     @tags_sprites << @team_tag_sprite
  28.     @team_tag_sprite.bitmap = RPG::Cache.picture(TeamTagFileName)
  29.  
  30.     @team_flag_sprite = Sprite.new(args[0])
  31.     @team_flag_sprite.bitmap = RPG::Cache.picture("队标")
  32.     @tags_sprites << @team_flag_sprite
  33.  
  34.     @count = 0
  35.     @wait_count = 0
  36.  
  37.     hzhj_old_init_make_tag(*args)
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 释放
  41.   #--------------------------------------------------------------------------
  42.   alias hzhj_old_dispose_make_tag dispose unless $@
  43.   def dispose
  44.     @tags_sprites.each{|sprite|sprite.dispose}
  45.     hzhj_old_dispose_make_tag
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 获取事件 HP # 正太君改
  49.   #--------------------------------------------------------------------------
  50.   def event_hp
  51.      return 0 if @character.nil?
  52.      return 0 if @character.is_a?(Game_Player)
  53.      return @character.hp
  54.   end
  55. =begin   
  56.   #--------------------------------------------------------------------------
  57.   # ● 判断是否显示队友标记
  58.   #--------------------------------------------------------------------------
  59.   def show_team_tag?
  60.     #under construct
  61.     return false if @character.is_a?(Game_Player)
  62.     return false if $scene.group_lisenter == nil
  63.     selected = $scene.group_lisenter.include?(@character.group)
  64.  
  65.     if event_hp > 0 and @character.team == 1 and selected and [email protected]
  66.        return $game_switches[TeamTagBar]
  67.     else
  68.       return false
  69.     end  
  70.     
  71.   end
  72. =end
  73.   #--------------------------------------------------------------------------
  74.   # ● 判断是否显示队长旗子
  75.   #--------------------------------------------------------------------------
  76.   def show_team_flag?
  77.     return false if @character.is_a?(Game_Player)
  78.     return false if @character.is_a?(EFS_Hero)
  79.     return false if $scene.group_lisenter == nil
  80.     selected = $scene.group_lisenter.include?(@character.group)
  81.  
  82.     cp = $scene.team_groups[@character.group-1].captain
  83.     if cp == @character
  84.        return $game_switches[TeamTagBar]
  85.     else
  86.       return false
  87.     end  
  88.  
  89.   end
  90.  
  91.   #--------------------------------------------------------------------------
  92.   # ● 判断是否显示队友标记
  93.   #--------------------------------------------------------------------------
  94.   def show_team_tag?
  95.     #under construct
  96.     return false if @character.is_a?(Game_Player)
  97.     return false if $scene.group_lisenter == nil
  98.     @selected = $scene.group_lisenter.include?(@character.group)
  99.  
  100.     if event_hp > 0 and @character.team == 1 and !@character.removed # and selected
  101.        return $game_switches[TeamTagBar]
  102.     else
  103.       return false
  104.     end  
  105.  
  106.   end
  107.  
  108.   #--------------------------------------------------------------------------
  109.   # ● 更新画面
  110.   #--------------------------------------------------------------------------
  111.   alias hzhj_old_update_make_tag update
  112.   def update
  113.     hzhj_old_update_make_tag
  114.     if !@character.is_a?(EFS_Battler) and !@character.is_a?(Game_Player)
  115.       @tags_sprites.each{|sprite|sprite.visible = false}
  116.     else
  117.       if show_team_flag?
  118.         @team_flag_sprite.visible =  true
  119.       else  
  120.         @team_flag_sprite.visible =  false
  121.       end  
  122.       # 刷新 标记 可见状态
  123.       if show_team_tag?
  124.  
  125.         @team_tag_sprite.visible =  true
  126.  
  127.         if @selected
  128.           @tags_sprites.each do |sprite|
  129.  
  130.  
  131.           sprite.ox = sprite.bitmap.width / 2
  132.           sprite.oy = sprite.bitmap.height
  133.           sprite.z = z
  134.           sprite.x = @character.screen_x
  135.           #blink_on
  136.           shif = @character.is_cal
  137.           if @character.ammo>0
  138.           sprite.y = shif ? @character.screen_y-92 : @character.screen_y-60
  139.           else
  140.           sprite.y = shif ? @character.screen_y-82 : @character.screen_y-50
  141.           end
  142.           sprite.opacity = 255
  143.           end#loop
  144.  
  145.         else
  146.  
  147.         # 刷新坐标
  148.         @tags_sprites.each do |sprite|
  149.           #sprite.zoom_y = 1
  150.           sprite.ox = sprite.bitmap.width / 2
  151.           sprite.oy = sprite.bitmap.height
  152.           sprite.z = z
  153.           sprite.x = @character.screen_x
  154.           #blink_on
  155.           shif = @character.is_cal
  156.           if @character.ammo>0
  157.           sprite.y = shif ? @character.screen_y-92 : @character.screen_y-60
  158.           else
  159.           sprite.y = shif ? @character.screen_y-82 : @character.screen_y-50
  160.           end
  161.           sprite.opacity = 125
  162.         end#loop
  163.  
  164.         end #if include
  165.  
  166.       else
  167.         @tags_sprites.each{|sprite|sprite.visible = false}
  168.       end
  169.  
  170.     end
  171.  
  172.  
  173.  
  174.   end
  175.  
  176.  
  177. end
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39009
在线时间
5716 小时
注册时间
2006-11-10
帖子
6618
2
发表于 2023-3-4 18:41:01 | 只看该作者
本帖最后由 灯笼菜刀王 于 2023-3-4 18:45 编辑

因为是在地图生成时就已经预备好picture的精灵, 所以除非重新写所有逻辑, 否则是不能临时改视口的,

不过嘛, 只想要不同视口的话, 大可加载时把它单独拿出来

  1. for i in 1..49
  2.    @picture_sprites.push(Sprite_Picture.new(@viewport2,$game_screen.pictures[i]))
  3. end
  4. @picture_sprites.push(Sprite_Picture.new(@viewport1,$game_screen.pictures[50]))
复制代码


就像这样

点评

谢谢  发表于 2023-4-5 12:28

评分

参与人数 1星屑 +20 +1 收起 理由
guoxiaomi + 20 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-10 20:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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