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

Project1

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

[讨论] 关于精灵,关于镜头放大。

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3574
在线时间
2338 小时
注册时间
2015-8-25
帖子
960

开拓者

跳转到指定楼层
1
发表于 2017-7-7 17:40:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请教一下。
  关于精灵,关于镜头放大。

说起来,在游戏编程中,Sprite这个概念最早是谁提出来的呢。
Viewport这个概念也是在很早的时候就存在了的吗?(虽然在VA中之前对这个概念有所了解了,现在转过来一想,我却想象不出来这个是怎么具体编写方式出来的。)
忽然间觉得有点好奇。
我现在还不太清晰的概念是:
比如是通过改变了viewport的透明度,就可以一并改变描绘在上面的对象的透明度这点,是怎么样的结构可以让它达到统一的控制?

有点想实现一个能使镜头放大的功能(特写镜头)。
参考了几个RM上的脚本,得出的结论是,一般的思路,莫非是,显示的倍率,本身就是精灵的一个属性吗?
所以有了上面的提问。。

点评

虽然看不懂……但是看到萌萌的七重酱我还是特别兴奋  发表于 2017-7-7 17:45

Lv2.观梦者

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
帖子
969
2
发表于 2017-7-7 18:16:34 | 只看该作者
本帖最后由 jhhuang 于 2017-7-7 19:18 编辑

就算要显示hello world,首先也需要一个窗体,估计这时候新人也不懂创建窗体。
所以Viewport估计就是从Windows的想法中异变出来或是Windows的原生种。

越说自己也越懵逼了。。。于是我也想问了:
创建一个DOS的顺序是不是->在系统windows上先创建Viewport,再在Viewport内创建软件Windows?(迭代迭代迭代迭代~!!!?!!?!?!?!?????){:2_260:}

至于viewport的功能,可以想象为类似照相机,照相机看到的就是一个Viewport,虽然没有Windowsn类,但有一堆真实Sprite类。调节整个Viewport亮度色彩远近等等,Sprite自然全改变了
ps:所以你说的改变的透明度,只是改变了viewport的透明度,Sprite其实没有改变。

至于Sprite,属性F1帮助文件都有吧?下面从F1中复制出来的一部分

Sprite
精灵的类。所谓精灵,是为了在游戏画面上显示人物等的基本概念。

属性
。。。
zoom_x
精灵的 X 轴方向的放大率。1.0 为等倍。

zoom_y
精灵的 Y 轴方向的放大率。1.0 为等倍。
。。。

【附赠:以上纯属猜测(拍飞~)】
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
帖子
969
3
发表于 2017-7-7 21:35:13 | 只看该作者
本帖最后由 jhhuang 于 2017-7-7 21:44 编辑

滤镜(伪)
随手试写,接受评论,不接受吐槽。
Q键放大,W键缩小。(随手修改默认工程,请勿直接食用)

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Gold
  4. #------------------------------------------------------------------------------
  5. #  显示持有金钱的窗口
  6. #==============================================================================
  7.  
  8. class Window_Gold < Window_Base
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对象
  11.   #--------------------------------------------------------------------------
  12.   def initialize
  13.     super(0, 0, 200, 200)
  14.     @with = 0
  15.     @w = 1.0
  16.     @h = 1.0
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 刷新
  20.   #--------------------------------------------------------------------------
  21.   def refresh
  22.     #contents.clear
  23.     self.z = -1
  24.     bitmap = Graphics.snap_to_bitmap
  25.     rect = Rect.new(0, 0, contents.width, contents.height)
  26.  
  27.     x = (bitmap.width - contents.width * @w) / 2
  28.     y = (bitmap.height - contents.height * @h) / 2
  29.     rect2 = Rect.new(x, y, contents.width * @w, contents.height * @h)
  30.  
  31.     contents.stretch_blt(rect, bitmap, rect2)
  32.     bitmap.dispose
  33.     self.z = 100
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 更新画面
  37.   #--------------------------------------------------------------------------
  38.   def update
  39.     super
  40.  
  41.     @w = @h += 0.1 if Input.repeat?(:L)
  42.     @w = @h -= 0.1 if Input.repeat?(:R)
  43.  
  44.     @with += 1
  45.     if @with % 3 == 0
  46.       refresh
  47.       @with = 0
  48.     end
  49.   end
  50. end
  51.  
  52. class Scene_Map < Scene_Base
  53.   #--------------------------------------------------------------------------
  54.   # ● 生成所有窗口
  55.   #--------------------------------------------------------------------------
  56.   def create_all_windows
  57.     create_message_window
  58.     create_scroll_text_window
  59.     create_location_window
  60.     @gold_window = Window_Gold.new
  61.   end
  62. end

评分

参与人数 1星屑 +10 收起 理由
v2sam + 10 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
163
在线时间
249 小时
注册时间
2014-7-18
帖子
44
4
发表于 2017-7-7 21:36:38 | 只看该作者
1、Sprite 是什么?

Wikipedia 给出的定义如下:
> In computer graphics, a sprite is a two-dimensional bitmap that is integrated into a larger scene. ------ Wikipedia.

2、如何理解 Sprite:

Sprite 关键结构如下,可以简单的理解为,一个 Sprite 对应下面四样东西:

{ Bitmap(图片本身的点阵数据),Position(这张图片在屏幕上的位置),Translation(这张图片的旋转角度、缩放比例),Effect(特效) }

3、Sprite 起源于 1974 年,是个相当古老且实用的概念。Viewport 出现不可考证,但是比 Sprite 晚很多。

> The use of sprites originated with arcade games. The first video game to represent player characters as human player images was Taito's Basketball, which was licensed in February 1974 to Midway, releasing it as TV Basketball in North America. ------ Wikipedia.

4、Sprite 与 Viewport 的关系:

就像 Photoshop 或者 Sai 里的图层与蒙版。

一个 Sprite 是“一个图层”,
一个 Viewport “一个图层文件夹外带一张蒙版”。

5、显示的倍率,本身就是精灵的一个属性吗?
是的,显示倍率是 Sprite 的属性,Viewport 没有这个属性。

6、RM XP/VX/VA 的 Viewport 不支持直接放大。

点评

放大方式:VA 上有 Graphics.snap_to_bitmap,实现方式参考楼上  发表于 2017-7-7 21:37
Role Play Games had saved me, but I can never save them.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 01:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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