《窗口旅行》的技术分享

10/3144 浏览综合
这是对《窗口旅行:Out Of Bounds》中一些功能的实现方法的分享
因为相关功能是几天前做的,有些已经不太记得,而且我的代码水平,编程思维都比较差。所以实现方法仅供参考,应该有更好的方法可以实现相关功能

检测光标是否在游戏窗口内的功能

Unity引擎中,似乎没有可以直接检测光标是否在游戏窗口内的功能。为了灵敏的检测光标位置,我进行了以下步骤
  1. 通过调用WindowsAPI。获得游戏窗口的大小和显示屏坐标位置,进而可计算出显示屏坐标中窗口所在的区域
  2. 获得光标的显示屏坐标
  3. 检测光标的显示屏坐标是否在窗口区域内

将游戏内物体固定在显示屏固定位置的方法

  1. 获取当前窗口左上角的显示屏坐标,并将其转换成unity游戏视图坐标系坐标
  2. 使用WorldToScreenPoint获取当前物体在游戏视图中的坐标
  3. 两值相加,获得unity游戏视图坐标系下的物体显示屏坐标
  4. 当物体坐标改变时,将其值重置为3中的值,这样就实现了物体固定在显示屏上的效果
但是物品在回到固定位置时会明显抽搐,所以我使用了Vector3.SmoothDamp方法来平滑移动物体,但会产生延迟。
4
2