【发布时间】:2009-10-25 19:32:51
【问题描述】:
我正在开发一款独立视频游戏,并且一直在假设因为我的控制器上的拇指杆具有圆形运动范围,所以它返回“圆形”坐标;也就是说,笛卡尔坐标被限制在一个圆形区域(半径为 1)。实际上,坐标是“正方形”;例如,右上角的摇杆位置注册为 x=1,y=1。当我将坐标从笛卡尔坐标转换为极坐标时,幅度可能会超过 1 - 这意味着玩家可以沿对角线移动比垂直或水平移动更快。
所以,澄清一下,我想根据方向和幅度记录模拟摇杆的位置,其中幅度在 0 和 1 之间。摇杆返回方形平面上的坐标,因此只需将坐标从笛卡尔到极坐标是不够的。我想我需要转换坐标空间,但那是我猴脑的极限。
【问题讨论】:
-
是占据“整个”正方形还是返回位于已经看起来像圆形的物体内的坐标?例如。确保您可以(或不能)采用 sqrt-magnitude。
-
把棍子直接竖起来会得到什么 (x,y)?另外,你的摇杆是模拟的还是开关的?你能得到像 (0.5,0.5) 这样的值吗?
-
是的,坐标分布在整个正方形上,包括角落。
-
那我可能会删除我的答案。 :-) 听起来驱动软件正在预先扭曲这些值。
-
Nosredna:我认为你是对的。某些东西(驱动程序?DirectInput?)正在将坐标映射到正方形。我想知道为什么。我几乎总是喜欢一个圆圈。