【问题标题】:2D Game control question - rotation & movement2D游戏控制题——旋转和移动
【发布时间】:2011-06-03 20:55:37
【问题描述】:

我想知道是否有人可以帮助我开始或指出正确的方向。我正在寻找使用核心动画制作一个简单的驾驶游戏。我是一个相当优秀的 obj-c 程序员,但在运动和数学方面,我失败了。我想要一个方向盘来控制汽车的方向,以及一个前进/后退来控制加速和减速。如果有人可以帮助我提供方向盘代码,我将不胜感激!所以基本上我需要帮助制作一个可以用一根手指拖动旋转的圆圈,我会将它的变换值传递给我的汽车视图(我想我可以处理加速/减速代码)任何接受者? :) 另外,我有 2 个邀请 dribbble.com 赠送,任何帮助我的人,我很乐意赠送一个。


grady,totowtwo,谢谢你的回答,我很感激。我已经到了可以旋转“方向盘”的地步,它会旋转我的“汽车”,我也让它向前和向后移动。只是需要变得更现实...这是 xCode 项目的链接,http://www.cl.ly/7VBU,它非常简单,所以如果有人看到它 - 更改/添加代码很容易。所以,如果有人想看看它,并帮助我使运动更加逼真,我将永远欠你的债! :) 谢谢!

【问题讨论】:

  • 你能分享你的方向盘代码吗?

标签: iphone ipad transform rotation


【解决方案1】:

首先要认识到一个典型的汽车方向盘有 900 度的运动,无论您是否想要手指轮的运动是设计决定。汽车中的车轮在车轮最大旋转时通常指向偏离 +z 约 30 度。您可以使用从方向盘角度到车轮角度的简单线性变换。

从那里,汽车三角角是车轮角度乘以前进距离的函数。当汽车向前行驶时,您可以想象当您指向正前方时追踪一个半径为无限大的圆的切线,而当方向盘完全倾斜时追踪一个半径较小的圆(约 4 倍汽车长度)。

当然,您可以随意抛弃典型车辆的设计规则。为您的用户提供像完整机器人一样的有趣驱动系统!

【讨论】:

    【解决方案2】:

    我不是专家,但您可能会这样做:

    CGPoint centerOfWheel;
    CGPoint currentTouchPoint;
    float radians = atan2(currentTouchPoint.x-centerOfWheel.x, currentTouchPoint.y-centerOfWheel.y);
    

    然后将变换应用到轮子上……当然,您会希望在远处的视图上累积变换,因为轮子的持续转动将导致继续转动。

    为了让它感觉更真实,反应更慢,您可能需要使用较小的转弯度数,这样车轮转一圈就不会导致车辆转一圈。你将不得不玩。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多