当前位置: 首页 > news >正文

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和封面物体均支持被选择,且可以使用相同的配置项进行设置,需要用到的配置项有以下两个:

  1. SelMode:设定此物体的选择模式。当为0时,此物体不可被选中。当为1时,此物体可以被选中,且选中后物体本身将变为选中颜色,表示被选中。当为2时,此物体可以被选中,当物体保持原始颜色,不使用选中颜色。默认为0,即不可被选中。
  2. 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

http://www.dtcms.com/a/324950.html

相关文章:

  • 2013年考研数学(二)真题
  • A#语言详解
  • 相比于传统的全波分析,特征模分析具有哪些优点
  • vue如何监听localstorage
  • 博览会(树形DP)
  • 机器学习——标准化、归一化
  • Spring Boot 事务详解:原理与实操指南
  • AQS(AbstractQueuedSynchronizer)底层源码实现与设计思想
  • 第三章-提示词:从0到1,提示词实训全攻略,解锁大语言模型无限潜能(14/36)
  • MyBatis Mapper核心组件协作关系深度解析
  • Java条件判断与用户交互实战案例
  • 【经典算法】二叉树最小深度详解:递归解法与可视化分析
  • 深入解析C#并行编程:从并行循环到异步编程模式
  • PyCATIA深度解析:基于装配截面自动化创建参考几何平面群的专业方案
  • 锂电生产设备健康管理:基于预测性维护的智能化解决方案​
  • 【github.io静态网页 怎么使用 github.io 搭建一个简单的网页?】
  • Python与MySQL数据库交互实践:自动化数据插入系统
  • GPU版的Pytorch安装(Win11)
  • SpringBoot项目自定义静态资源映射规则
  • 【嵌入式】Linux的常用操作命令 (1)
  • SAP 121移动类型的说明
  • C野指针的概念与应对(源头、阻隔、定位)
  • STM32定时器与延时系统完整笔记
  • 【C#补全计划】万类之父中的方法
  • 使用单调栈解决力扣第42题--接雨水
  • 亚麻云之静态资源管家——S3存储服务实战
  • SSH远程连接TRAE时显示权限被拒绝检查方案
  • 游泳学习 — 蛙泳
  • 变量详解:创建初始化与内存管理
  • go加速配置(下载第三方库)