1

我正在编写一个游戏,当用户触摸屏幕左侧时,玩家向左移动,当他们触摸屏幕的右手部分时,玩家向右移动。

目前播放器仅在您第一次触摸屏幕时移动,我希望只要用户将手指放在屏幕上就可以施加力……我似乎找不到为此的 API 调用。我需要做什么?

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self handleFrankMove:touches withEvent:event];
}

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    [self handleFrankMove:touches withEvent:event];
}

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    [self handleFrankMove:touches withEvent:event];
}
4

1 回答 1

0

不知道你是如何实现移动的,但是在 touchesBegan 上,你可以在精灵上启动 CCMoveTo 动作(屏幕边缘),在 ccTouchesEnded 上,你可以在精灵上 stopAllActions (或者如果你小心的话,停止特定动作掌握它)。同样,有很多方法可以给猫换皮,使用哪种方法在很大程度上取决于您正在实施的整体游戏逻辑和 UI 策略。

编辑:这是一种不依赖 CCActions 的方式

时间:onTouchesBegan:

[self schedule:@selector(keepPushingFrank:) interval:.2]; // interval up to you, experiment

何时:onTouchesEnded 或 onTouchesCancelled

[self unchedule:@selector(keepPushingFrank:)]

何时:onTouchesMoved:

[self computeFingerLogicforTouch:_frankTouch]; // you may need this to control
                                               // behaviour in keepPushingFrank

并添加一个像这样的方法:

-(void) keepPushingFrank:(ccTime) dt{
    // do your thing with box2D to change forces
    // on Frank. you may want to setup some iVars
    // to compute 'finger intention' when it moves
    // and apply physics accordingly (dont know your 
    // app).

}
于 2012-10-11T21:54:52.307 回答