0

我正在做的是当我在屏幕上拖动手指时,它使用 ccTouchesMoved(CCSet* touches, CCEvent* event) 将点存储到一个数组中。

这样可行

然后在更新方法中,如果它在我的单元类中调用 move 方法,它将单元移动到数组中的第一个点,然后将其删除。

这样可行

我的问题是,当我将手指从 A 点缓慢移动到 B 时,与我将手指从 A 点快速移动到 B 时相比,它在数组中存储的点数量不同,并且移动也不相同。

我试图模拟一种飞行控制类型的游戏,它总是以相同的速度跟随你的路径。

我的逻辑是否错误并且我正在以错误的方式进行操作?

4

2 回答 2

0

可能的解决方案:

  • 更改有关如何处理来自数字化仪的信息的操作系统配置
  • 每次,在存储一个点之前,请检查特定半径内的其他点。如果你找到任何然后扔掉它


解决方案#1 可能是最好的。

解决方案 #2只会设置点之间的最小距离,如果您更快地移动手指,点之间的距离将(可能)增加,具体取决于硬件。

于 2013-07-10T22:44:30.470 回答
0

定义一个常数,例如

#define SPEED 50.0f

然后,当您穿过 2 点您的商店时,例如

CCPoint p1 = ccp(10,20);
CCPoint p2 = ccp(40,60);

创建 Move 时,请使用

CCMoveTo* moveAction = CCMoveTo::create(p2, ccpDistance(p2,p1)/SPEED);
于 2013-07-10T22:56:53.200 回答