以相同的速度从一点到另一点移动精灵

时间:2013-07-10 22:33:50

标签: c++ cocos2d-iphone cocos2d-x

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

有效

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

有效

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

我正试图模仿飞行控制类型的游戏,它始终以相同的速度跟随你的路径。

我的逻辑关闭了,我的方向错了吗?

2 个答案:

答案 0 :(得分:0)

可能的解决方案:

  • 更改有关信息的操作系统 config 来自数字化仪的处理。
  • 每次,在存储积分之前,检查a中的其他积分 具体半径。如果您发现任何将其丢弃


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

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

答案 1 :(得分: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);
相关问题