本文译自 orx tutorials 的
卷轴效果(Scrolling)教程
,tarzan_sp译。最新版本见Orx
官方中文Wiki
,因为格式的原因,推荐所有文章都去官方的WIKI
查看,那里的格式最好。
望有新人能够加入这个翻译者的队伍,早日将
Orx的WIKI页中文化。有兴趣的请加入73063577,并与我取得联系,防止重复翻译。
卷轴效
果(
scrolling
)教程
综述
学
习前面的基础教程来了解更多关于对象创建,时钟控制,框架层次结构,动画,视口和摄像机,音频和音乐,特效和物理特性的基础信息。
此
教程说明了如何去展示一个视差卷轴。
正如你可以看到的,视角切换本身没有用到特别的代码。
事
实上,orx的默认2D 渲染插件将根据你在配置文件中怎么设置对象的属性来帮你设置好视差卷轴。
默认情况下,在
这个教程里,配置''AutoScroll''将被设置为'both',表示两个坐标轴方向上都有滚动。
这意味着当摄像
机移动的时候视差卷轴将在X,Y两个坐标轴上同时发生。
你可以尝试用这个值去设置x,y,甚至移除它。
除了
''AutoScroll''的属性外,你可以找到''DepthScale''属性(深度缩放比)。
这个属性将用来
依据对象离摄像机的距离自动的调整对象的缩放。//
摄像机视锥体越小,自动缩放将会应用的越快。
你可以尝试将对
象定位到摄像机的远&近剪裁平面来获取你感觉合适的视差卷轴和深度缩放比。
你可以通过配置文件来改变视差卷轴的速度(注释:摄像机移动的速度)。就像平时一样,
你可以实时修改它的值并且重新读取配置。
正如你所能看到的,我们的update代码需要简单地移动3D空间里的摄像机就行了。
按下方向键能把摄像机视角按照X轴和Y轴移动,按下control和alt键会让视角按照Z轴移动。
正如前面说的,
所有的视差卷轴效果将会正常发生,因为所有的对象都已近被合适地处理了。((译者注:包括缩放和位置))
在场景里移动摄
像机只需要很少的代码,而且不用去关心任何的滚动效果。((译者注:即这些效果已经自动的实现了))
你对你想要有多
少个滚动平面,以及哪些对象应该被滚动所影响有完全的控制。
最后一点与天空的显示有关。
正如[[frame|框架教程(frame
tutorial)]]里我们所看到的,我们把天空对象的frame设置为摄像机视角的一个子frame。
这意味着在配置
文件里对天空对象位置的设置将总是相对与摄像机位置的相对值。
换句话说,天空将总是跟随着摄像机视角。
当我们把它的深
度值设置为默认值1000时,(注释:与视锥矩形的远剪裁平面的值相同)它将会停留在背景中。
详细说明
就像平时一样,
我们通过加载配置文件,创建一个时钟,注册我们的Update函数。
最
后,我们创建我们的天空背景和我们所有的云对象。
请
回头看前面的教程来了解更多的细节。
现
在,让我们来看Update函数。首先,我们从配置文件得到摄像机速度,然后通过依赖
DT((译者注:指clock结构的DT字段,见下面的例子))来更新它,从而摆脱帧率依赖。
orxVECTOR vScrollSpeed;
orxConfig_SelectSection("Tutorial");
orxConfig_GetVector("ScrollSpeed",
&vScrollSpeed);
orxVector_Mulf(&vScrollSpeed,
&vScrollSpeed, _pstClockInfo->fDT);
到目前为止没有什么是真正新鲜的。//
现在我们需要根据输入改变摄像头移动的vector(向量)。//
if(orxInput_IsActive("CameraRight"))
{
vMove.fX += vScrollSpeed.fX;
}
if(orxInput_IsActive("CameraLeft"))
{
vMove.fX -= vScrollSpeed.fX;
}
if(orxInput_IsActive("CameraDown"))
{
vMove.fY += vScrollSpeed.fY;
}
if(orxInput_IsActive("CameraUp"))
{
vMove.fY -= vScrollSpeed.fY;
}
if(orxInput_IsActive("CameraZoomIn"))
{
vMove.fZ += vScrollSpeed.fZ;
}
if(orxInput_IsActive("CameraZoomOut"))
{
vMove.fZ -= vScrollSpeed.fZ;
最
后我们将这个移动(向量)应 用到摄像头上
orxCamera_SetPosition(pstCamera,
orxVector_Add(&vPosition, orxCamera_GetPosition(pstCamera,
&vPosition), &vMove));
正
如前面陈述的,我们将不需要 写一行代码来控制视差卷轴。
所
有的事将会在配置端被完成。 我们简单地在我们的3D空间里移动我们的摄像头。
让
我们看看配置数据。这是第一 块有我们自己数据的教程部分。
[Tutorial]
CloudNumber = 1000
ScrollSpeed = (300.0, 300.0, 400.0)
正
如你所看见的,我们用ScrollSpeed和CloudNumber两个字段来控制这个程 序。
ScrollSpeed可以在运行时修改然后重载读取配置文件(通过按
Backspace键)进行更新。
现在让我们看看云朵对象
[CloudGraphic]
Texture = ../../data/scenery/cloud.png
Pivot = center
[Cloud]
Graphic
= CloudGraphic
Position = (0.0, 0.0,
100.0) ~ (3000.0, 2000.0, 500.0)
AutoScroll
= both
DepthScale = true
Color = (180, 180, 180) ~ (220, 220, 220)
Alpha = 0.0
Scale = 1.0 ~ 1.5
FXList = FadeIn
激
活视差卷轴的AutoScroll字段和DpthScale地段是非常重要的两个字段。
首
先AutoScroll字段可以使用‘x’的值,‘x’的值或者‘both’的值。
这
将决定针对这个对象的视差卷轴将在哪个坐标轴上发生。
视
差卷轴将根据对象的Z轴坐标(注释:它在摄像机的
视锥矩形里面的深度
)
被渲染。
对象在Z坐标轴上距离摄像机越近,视差卷轴进行得越快。
AutoScrol 的缺省值是none。
DepthScale(深度缩放比)属性将决定渲染插件是根据它的Z轴坐标来调整对象
的比例。
对象在Z轴上距离摄像机越近,它将被显示得越大。
DepathScale(深度缩放比)的缺省值是false
现在让我们看看我们的天空对象
[SkyGraphic]
Texture = ../../data/scenery/sky.png
Pivot = center
[Sky]
Graphic
= SkyGraphic
Scale = (0.5,
0.004167, 1.0)
Position = (0.0, 0.0,
1.0)
ParentCamera = Camera
正
如你所看到的,我们为''Sky''对象设置 了一个ParentCamera(父摄像机),意味着我们的''Sky''将在摄像机的local
space中(本地空间)(注释:它将跟随着摄像机一起移动)。
我
们把天空的位置设为(0.0 , 0.0 , 1.0 ),这意味着它被置于摄像机的视角的中央,同时它也成为摄像机所能看到画面的背景。
当有一个ParentCamera存在的时候,Scale(缩放比)和
Position(坐标) 属性默认将在父对象的空间中表示,除非把 UseParentSpace(使用父级空间)设置为false。
因此把scale(缩放比)的值设置为’weird’(古怪的)。如果我们有一个对象
是由单像素 构成的,一个缩放比设置为( 1.0 , 1.0 , 1.0 )的对象将覆盖整个父级摄像机所能看到的画面。
因为我们的sky.png位图在X轴上的宽度是2像素,我们在X轴方向需要一个大小为
0.5的 scale(缩放比)
同样的方式,因
为它在Y坐标轴上的长度是240 像素,我们在Y轴上需要一个大小为1/240的scale(缩放比)
资源
源代码:
09_Scrolling.c
配置文件:
09_Scrolling.ini
分享到:
相关推荐
5. **插件机制**:`plugins` 目录下的文件体现了Orx的插件系统,允许开发者扩展引擎功能,比如添加新的图形效果、物理引擎支持等。 6. **编译与构建**:`bin` 目录下的文件和子目录可能包含了不同平台的可执行文件...
什么是ORx? ORx的名称为“ Oh-Rex”,代表Outernet ReceiverX。“ X”代表自制设备。支持的设备和配置请注意,Raspberry Pi v1是目前唯一受支持的版本。 v2具有不支持的ARM v7处理器。 此存储库中的脚本支持以下...
Orx是一款强大的便携式游戏引擎,专注于2D游戏开发,以其轻量级、灵活性和易用性而受到开发者们的欢迎。作为一个开源项目,Orx提供了完全透明的源代码,鼓励社区参与,促进了代码的持续改进和创新。 Orx的核心设计...
这个“非典型”之处在于它不采用常见的图形渲染管线,而是提供了一种更灵活的方式来构建游戏逻辑和视觉效果。Orx 以其小巧的体积、跨平台支持和丰富的功能集而受到开发者的欢迎。 源码包包含了Orx引擎的核心代码,...
总的来说,IIS URL重写组件是IIS服务器不可或缺的一个工具,它极大地增强了服务器对URL的管理和优化能力,对于提升网站性能和SEO效果具有显著作用。通过深入理解和熟练运用,可以有效地改善网站的用户体验和搜索引擎...
标题"Suz-OrX-archive-refs-heads-master.zip"似乎是一个Git仓库的归档文件,通常包含了一个Git仓库在特定提交点的所有文件和目录。这种类型的文件经常用于代码备份、版本控制或者分享代码库。"refs-heads-master...
标题"**C#实现类似淘宝图片局部放大功能源码.rar**"指出,我们关注的是一个使用C#编程语言实现的功能,该功能类似于淘宝网站上常见的一种图片查看方式,即当鼠标悬停在图片上时,能够显示图片的局部放大效果。...
在协议选择方面,PELCON万用解码器支持多种品牌的协议,如PELCO-D、PELCO-P、SAMSUNG、PHILIPS、RM110、CCR-20G、HY9600、KALATEL、KODICOM、VICON、ORX-10、PANASONIC、PIH717、EASTERN、IDRS等。每个协议都有对应...
ORX配置对崇高文本的支持 安装 打开崇高文字, 单击菜单中的“首选项”,然后单击“浏览软件包...” 将ORX文件夹复制到那里, 完毕。 学分 我入侵了这个仓库[ ],然后添加了与ORX相关的内容。 什么是ORX? Orx...
ocaml-orx-OCaml与Orx游戏库的绑定 是“一个开源,可移植,轻便,基于插件,数据驱动且非常易于使用的2D导向游戏引擎。” Orx本身是用C编写的。 该存储库提供绑定以使用OCaml中的Orx。 声音,图形,物理,输入处理...
在Windows操作系统中,richtx32.ocx是一个重要的ActiveX控件,主要用于处理Rich Text Format (RTF) 文档和文本编辑。这个控件在一些应用程序中是必需的,特别是那些依赖于旧版Microsoft RichEdit功能的软件。...
- **LDBx/ABx/OBx/LDWx/AWx/OWx/LDDx/ADx/ODx/LDRx/ARx/ORx**: 用于比较两个数值,并根据比较结果设置输出。 - **NOT**: 对栈顶值取反。 - **EU/ED**: 用于检测上升沿和下降沿。 3. **逻辑控制指令**: - **=**...
**标签解析:** “rewrite”标签直接关联到URL重写技术,这是Web开发中一种常见的优化策略,通过内部转换规则改变URL,可以实现诸如隐藏真实路径、美化URL、提升SEO效果等多种目的。 **压缩包子文件解析:** 1. **...
Run-time error '339': Component 'MSCOMCTL.OCX' or one of its dependencies not correctly registered:a file is missing or invalid. win8操作步骤 ①解压压缩包 ②将解压出来的文件,剪切至 ...
《ArcGIS 10 图框工具5.2详解与应用》 ArcGIS 10 图框工具5.2是一款专为ArcGIS 10及10.1版本设计的图框生成工具,它极大地简化了地图制图过程中的图框制作步骤,提高了工作效率。作为一款共享软件,它鼓励用户支持...
EPORNER 2.COM%20-%20[bpM0orx6f9R]%20
### Bernese GPS Software 版本 5.0 教程概览及知识点解析 #### 一、引言:示例活动介绍 在本教程中,将详细介绍如何使用 Bernese GPS 软件版本 5.0 来处理一组欧洲国际 GNSS (IGS) 网络中的八个站点数据。这些...
1. **设置BRx和ORx**:BRx(Base Register x)和ORx(Option Register x)用于定义内存映射的基础地址和选项,是进行UPM编程的基础。 2. **配置MxMR[OP]=01**:将操作模式设置为写入RAM阵列。 3. **向RAM阵列写入模式**...
- RINEX文件(ORX/OUT):标准GPS观测数据文件格式,包含观测和导航信息。 - 站点文件(STA):包括站点位置、接收机类型和天线高度等信息。 5. 终端会话的目标和过程 每天的终端会话都有其明确的目标和步骤,例如...
欧罗调色板用于HTML颜色的定义。... 包含之后,您可以通过@Colors.MediumOrchid直接引用颜色名称。... 当您的编辑器支持颜色的可视化并且您可以原型化而无需使用颜色选择器工具切换到绘画程序时,这是很好的。