2012-01-25 7 views
0

私はObjective Cとアプリ開発には新しくなっていますので、簡単に私に行ってください! 私は基本的なゲームを作ろうとしており、ユーザーの指が画面上にある間にスプライトを左または右に連続して移動する必要があります - 左に行くには左に、右に移動するには右に... 私は更新を使用しようとしています1/60秒ごとに少数のピクセルの動きを繰り返す。これまでのところ、これは私が持っているものです(フォーマットについては残念です):iPhone、Cocos2D - スクリーンに触れながら左右スプライトを動かす

#import "GameplayLayer.h" 

    @implementation GameplayLayer 

    -(id)init { 
     self = [super init]; 
     if (self != nil) { 
     CGSize screenSize = [CCDirector sharedDirector].winSize; 
      // enable touches 
     self.isTouchEnabled = YES; 

    blobSprite = [CCSprite spriteWithFile:@"blob.png"]; 
    [blobSprite setPosition: CGPointMake(screenSize.width/2, screenSize.height*0.17f)]; 

    ball = [CCSprite spriteWithFile:@"ball.png"]; 
    [ball setPosition:CGPointMake(10, screenSize.height*0.75f)]; 

    [self addChild:blobSprite]; 
    [self addChild:ball]; 

    [self schedule:@selector(update) interval:1.0f/60.0f]; 

    } 
    return self; 
} 



    -(void) update:(ccTime)dt{ 
     if (_tapDownLeft == YES){ 
     blobSprite.position.x==blobSprite.position.x-5; 
     } 
    if (_tapDownRight == YES){ 
     blobSprite.position.x==blobSprite.position.x+5; 
    } 
    } 


-(void) ccTouchesBegan:(UITouch*)touch withEvent: (UIEvent *)event{ 

CGPoint touchLocation = [touch locationInView:[touch view]]; 
touchLocation = [[CCDirector sharedDirector] convertToGL:touchLocation]; 

if (touchLocation.x > 400) { 
    if ((blobSprite.position.x+10)<460){ 
      _tapDownRight = YES; 
     } 
} 

if (touchLocation.x < 200) { 
    if ((blobSprite.position.x-10>20)){ 
      _tapDownLeft = YES; 
     } 
} 

else { 
    _tapDownLeft = NO; 
    _tapDownRight = NO; 
     } 
} 
-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event{ 
     _tapDownLeft = NO; 
     _tapDownRight = NO; 
     } 



-(void) registerWithTouchDispatcher{ 
    [[CCTouchDispatcher sharedDispatcher]addTargetedDelegate:self priority:0       swallowsTouches:YES]; 
} 


@end 

私はこれで正しい行にありますか?現時点では、更新時に「表現の結果が未使用」となっています。誰かが私に行方不明を教えてもらえますか?どんな助けでも大歓迎です。

おかげで、 パトリック

答えて

1

は私がここにいくつかのことを参照してください。

  • 一定ではない、あなたのセレクタは更新が呼び出されます:@selector(更新:)
  • 私はdtはどちらかであることに依存しないでしょうちょうど1/60秒、一定ではありません。私は速度定数(1秒あたりのポイント数)を定義し、各更新サイクルで所望の速度とdtに基づいてデルタXを点数で計算することを好むでしょう。
  • 私は 'registerWithTouchDispatcher'コールを見ません(私はそれらをonEnterとonExitメソッドに配置しようとします)。
  • どこかで、あなたは([スーパークリーンアップ]を起動することを忘れてはいけない)のいずれかのdealloc、またはより良いで地域清掃方法で(あなたの子供を削除し、特定します。
0

更新機能

に引数を削除します
関連する問題