2012-08-27 6 views
0

Comment déplacer une image-objet au point de contact sur l'axe x, ce qui augmente la vélocité.x. Plus le contact est long, plus la vélocité est élevée, puis quand il entre dans une certaine plage du point de contact ou que l'utilisateur relâche son doigt, le ralentir à nouveau?Déplacement d'une image-objet au point de touche augmentation de la vélocité plus la touche est longue

J'ai une configuration de classe de joueur avec une valeur de vélocité, qui est mise à jour dans une méthode de mise à jour, je ne sais pas comment obtenir le comportement requis dans les méthodes de touches cependant?

Cheers,

Lewis

Répondre

2

Cela devrait vous mettre dans l'ordre de grandeur (les variables d'instance et en ajoutant qu'il est touchable serait dans le init, laissez-moi savoir si vous avez besoin cet extrait ainsi):

- (BOOL) ccTouchBegan: (UITouch *) touch 
      withEvent: (UIEvent *) event 
{ 
    _touchBeganAt = [self convertTouchToNodeSpace:touch]; 
    _velocityChangeSpeed = 1; 
} 


- (void) ccTouchEnded: (UITouch *) touch 
      withEvent: (UIEvent *) event 
{ 
    _velocityChangeSpeed = -1; 
} 

- (void) update:(ccTime)delta 
{ 
    velocityThreshold = 1; //? You can tune this 
    distanceThreshold = 1; //? Same 

    _sprite.velocity += _velocityChangeSpeed; 

    //So it comes to a complete stop, as opposed to moving backwards 
    if(_sprite.velocity < velocityThreshold) 
     _velocityChangeSpeed = 0; 

    float distanceFromTouchedPoint = ABS(_sprite.position.x - _touchBeganAt.x); 
    if(distanceFromTouchedPoint < distanceThreshold) 
     _velocity = 0; 
} 
Questions connexes