cocos2dで画像(スプライト)を移動させたい

スプライトを移動させたい場合はアクションをつくる

  • アクションのクラスはだいたい、目標座標まで移動するCCXxxToと、移動量を指定するCCXxxByの2種類ある
  • 作ったアクションと反対の動きをさせたい場合は、reverseメソッドを使う
  • 複数のアクションを順番に実行したい場合は、CCSequenceにまとめる
  • アクションを繰り返したい場合は、CCRepeat/CCRepeatForeverを使う
  • (CCNodeの)runActionメソッドで作ったアクションまたはシーケンスを設定する

回転移動をするアクション

CCSprite* rotateObstacle = [CCSprite spriteWithFile:RESOURCE_SPRITE_WALL];
rotateObstacle.position = ccp(winSize.width/2-50, 50);
rotateObstacle.anchorPoint = ccp(0.5f, 0);
rotateObstacle.scaleY = 2.0f;
CCRotateBy* rotateAction = [CCRotateBy actionWithDuration:3 angle:360]; // 3秒で360度回転
[rotateObstacle runAction:rotateAction];
[self.baseLayer addChild:rotateObstacle z:kZBaseLayer tag:kTagWall];

上下移動を継続するアクション

CCSprite* moveObstacle = [CCSprite spriteWithFile:RESOURCE_SPRITE_WALL];
moveObstacle.position = ccp(winSize.width/2+50, 50);
moveObstacle.scaleX = 3.0f;
CCMoveBy* upAction = [CCMoveBy actionWithDuration:1 position:ccp(0, 50)];   // 1秒で右に50移動
CCActionInterval* downAction = [upAction reverse];
CCSequence* updownSequence = [CCSequence actions:upAction, downAction, nil];
CCRepeatForever* updownRepeat = [CCRepeatForever actionWithAction:updownSequence];
[moveObstacle runAction:updownRepeat];
[self.baseLayer addChild:moveObstacle z:kZBaseLayer tag:kTagWall];

参考サイト

cocos2d for iPhoneレッスンノート
加藤寛人 佐藤伸吾
ラトルズ
売り上げランキング: 152,450

関連エントリーはありません

This entry was posted in 未分類 and tagged , , . Bookmark the permalink.