Cocos2d iphone 触摸时向上移动精灵并将其设置为起始位置

Cocos2d iphone 触摸时向上移动精灵并将其设置为起始位置,cocos2d-iphone,Cocos2d Iphone,我是Cocos2D新手,遇到了一个问题。我也搜索了很多,但似乎没有找到问题的答案。情况是: 当游戏开始时,主精灵应该继续下降(就像计划崩溃一样)。如果用户触摸屏幕上的任何地方,精灵应该向上移动到触摸点的Y坐标,当精灵到达该点时,它应该从该点开始再次向下移动。想象一架飞机坠毁(坠落),当用户点击任何地方时,飞机上升(稍微起飞),然后又开始降落。我们只是不必让它掉到地上 所以,我已经完成了下降部分。以及上升部分但问题是,当精灵完成上升时,它不会从那里开始下降,而是从上升的地方继续下降。 请帮我实现这

我是Cocos2D新手,遇到了一个问题。我也搜索了很多,但似乎没有找到问题的答案。情况是:

当游戏开始时,主精灵应该继续下降(就像计划崩溃一样)。如果用户触摸屏幕上的任何地方,精灵应该向上移动到触摸点的Y坐标,当精灵到达该点时,它应该从该点开始再次向下移动。想象一架飞机坠毁(坠落),当用户点击任何地方时,飞机上升(稍微起飞),然后又开始降落。我们只是不必让它掉到地上

所以,我已经完成了下降部分。以及上升部分但问题是,当精灵完成上升时,它不会从那里开始下降,而是从上升的地方继续下降。

请帮我实现这个目标

下面是我在
init()方法中的代码:

 [plane runAction:[CCRepeatForever actionWithAction:[CCSequence actions:[CCMoveBy actionWithDuration:1 position:ccp(0,-20)],
                                                       nil]]];
  [plane runAction:[CCMoveBy actionWithDuration:1 position:ccp(0,20)]];
触摸开始时向上移动的代码方法:

 [plane runAction:[CCRepeatForever actionWithAction:[CCSequence actions:[CCMoveBy actionWithDuration:1 position:ccp(0,-20)],
                                                       nil]]];
  [plane runAction:[CCMoveBy actionWithDuration:1 position:ccp(0,20)]];

问题是,您使用了一个可重复的操作,一旦应用了“上移”操作,就会出现不一致,因为两个操作都在同一个对象上工作(我不记得是否取消了前一个操作,但这种方法不起作用)

因此,我将对
init()
执行以下操作:

然后执行
startdownmotation()
,如下所示:

[plane runAction:[CCSequence actions:[CCMoveBy actionWithDuration:1 position:ccp(0,-plane.potision.y)],
                                     [CCCallBlock actionWithBlock:
                                     ^{
                                           // Do game over logic. (i.e. plain crashed)
                                      }],nil]];
对于
触摸开始()

我在这里做的是开始向下移动(我假设y=0是崩溃点),所以我移动精灵减去它的y位置


如果用户触摸屏幕,平面y位置将移动到触摸点,之后将再次调用向下移动(因为我使用了CCSequence,向下移动仅在向上移动操作完成后才会发生)

问题在于您使用了可重复的操作,并且一旦应用了“向上移动”操作由于两个操作都在同一个对象上工作,因此您将具有不一致性(我不记得是否取消了上一个操作,但这种方法将不起作用)

因此,我将对
init()
执行以下操作:

然后执行
startdownmotation()
,如下所示:

[plane runAction:[CCSequence actions:[CCMoveBy actionWithDuration:1 position:ccp(0,-plane.potision.y)],
                                     [CCCallBlock actionWithBlock:
                                     ^{
                                           // Do game over logic. (i.e. plain crashed)
                                      }],nil]];
对于
触摸开始()

我在这里做的是开始向下移动(我假设y=0是崩溃点),所以我移动精灵减去它的y位置

如果用户触摸屏幕,平面y位置将移动到触摸点,然后再次调用向下移动(因为我使用了CCSequence,只有在向上移动操作完成后才会发生向下移动)