W3D引擎游戏开发----从入门到精通【23】
还可以使用函数W3DGetScreenCursorPos获得当前光标在引擎窗口上的坐标位置x,y。函数原型如下所示。
函数定义 | BOOL W3DGetScreenCursorPos(DWORD* pdwX,DWORD* pdwY) |
功能描述 | 获得当前光标在引擎窗口上x和y坐标。pdwX和pdwY接收x和y坐标。 |
返回值 | 调用成功返回true,失败返回false,调用W3DGetLastError了解更多错误信息 |
(2)SelectMode:设置场景的选择模式。当为1时,场景中的物体可以通过鼠标左键进行选择,也可以通过选择位置函数指定选择位置后进行选择。当为2时,场景中的物体只有鼠标左键可以进行选择。当为3时,场景中的物体只能通过选择位置函数指定选择位置后进行选择。当为0时,场景中所有物体均不可被选择,此时能轻微提升性能。默认为1,即两种方式都可以进行选择。
因为我们需要鼠标点击地面和屏幕上的两个物体,所以选择点输入方式应设置为0模式,场景选择模式应设置为1或2模式,这里设置为1模式。在场景的配置项[SceneMod1]中添加如下选择设置配置项,因为这两项的数值设置都是默认值,因此也可不设置。
...
SelectInputMode=0
SelectMode=1
...
5.4 物体选择的配置方法
上一节中我们已经对场景的选择模式进行了配置,那么这时选择功能就已经开启,但我们还需要对可以被选中的物体进行配置,此物体才能最终被选择。在W3D引擎中,场景物体、PT和封面物体均支持被选择,且可以使用相同的配置项进行设置,需要用到的配置项有以下两个:
- SelMode:设定此物体的选择模式。当为0时,此物体不可被选中。当为1时,此物体可以被选中,且选中后物体本身将变为选中颜色,表示被选中。当为2时,此物体可以被选中,当物体保持原始颜色,不使用选中颜色。默认为0,即不可被选中。
- SelColR、SelColG、SelColB和SelColA:设定此物体被选中后的颜色。W3D引擎允许物体被选中后自动改变其基础颜色,SelColR设置选择颜色的红分量,SelColG设置选择颜色的绿分量,SelColB设置选择颜色的蓝分量,SelColA设置选择颜色的透明分量。SelColR默认为1.0,SelColG默认为0.0,SelColB默认为0.0,SelColA默认为1.0,因此选择颜色默认为透明度为1.0(即不透明)的红色。这里有个小技巧:通过巧妙使用SelColA,可以实现在选择后改变一个透明物体的透明度。
合理配置这两个配置项就可以设置一个物体能否被选中以及选中后的颜色。W3D引擎采用深度测定法进行选择计算,这种方法对于选择计算具有非常高的效率,特别适合于竞技游戏这类高渲染速度的游戏场合,但是这种方法需要被选择的物体提供有效的深度信息。对于不透明物体,本身带有深度信息,但对于透明物体,我们需要额外为其配置一个设置,使得这些物体能够提供深度信息。为透明物体设置TransDepthTest配置项,定义如下:
TransDepthTest:设定此在透明时是否开深度测试。此项默认为0,即不开启。
我们为地面上的两个透明按钮(一个场景物体一个PT物体)和两个透明封面物体(屏幕上的两个按钮)分别配置选择配置项。按钮场景物体添加配置项:
...
12TransDepthTest=1
12SelMode=1
12SelColR=1.0
12SelColG=0.0
12SelColB=0.0
12SelColA=0.5
...
按钮PT物体添加配置项:
...
8TransDepthTest=1
8SelMode=1
8SelColR=1.0
8SelColG=0.0
8SelColB=0.0
8SelColA=0.5
...
按钮封面物体添加配置项(两个物体):
...
2TransDepthTest=1
2SelMode=1
2SelColR=1.0
2SelColG=0.0
2SelColB=0.0
2SelColA=0.5
...
...
3TransDepthTest=1
3SelMode=1
3SelColR=1.0
3SelColG=0.0
3SelColB=0.0
3SelColA=0.5
...
这里需要说明的是SelColR、SelColG和SelColB设置的数值都是默认数值,因为也可以不用显式配置。
通过网盘分享的文件:W3D引擎游戏开发学习资料
链接: https://pan.baidu.com/s/1mm5f9nDzkT3KlFYQscJBoQ?pwd=1234 提取码: 1234