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