• TOP
  • >
  • その他
  • >
  • schedule(ルート)を利用する

schedule(ルート)を利用する

スプライトを動かす方法は大きく分けて2通りあります。

  • ゲーム中に定期的に呼び出すメソッド(ルート)を作成する。
  • CCActionクラスを利用する。
今回は、1番めの「ゲーム中に定期的に呼び出すメソッド(ルート)を作成する」を紹介したいと思います。

update

定期的にメソッドを呼び出す方法はいくつかあります。
//init内に記入
this->scheduleUpdate();

//ヘッダー(.h)内
void update(float delta);

//cpp内
void HelloWorldLayer::update(float delta){

  //ここに記入されたモノを、定期的に呼び出す

}

例 cocos2dx3.x】
void HelloWorldLayer::update(float delta){

    //メソッドが呼び出されるごとに、スプライトの位置を変えています。
    //これが連続することで、なめらかに動いているように見えます。
   sprite->setPosition(Point(sprite->getPositionX() + 100*delta, sprite->getPositionY()));
    
    //これは画面の右端に達したら、左端に位置を移動します。
    if (sprite->getPositionX() > 480+64) {
        sprite->setPosition(ccp( -64, sprite->getPositionY()));
    }  
   
}

例 cocos2dx2.x】
void HelloWorldLayer::update(float delta){

    //メソッドが呼び出されるごとに、スプライトの位置を変えています。
    //これが連続することで、なめらかに動いているように見えます。
   sprite->setPosition(ccp(sprite->getPositionX() + 100*delta, sprite->getPositionY()));
    
    //これは画面の右端に達したら、左端に位置を移動します。
    if (sprite->getPositionX() > 480+64) {
        sprite->setPosition(ccp( -64, sprite->getPositionY()));
    }  
   
}

例 動画



自分でメソッドを設定

また、以下のようにも設定ができます。
この場合、メソッド名を自分で設定出来ます。

this->schedule(schedule_selector(HelloWorldLayer::move));



void HelloWorldLayer::move(float delta){

  //ここに記入されたモノを、定期的に呼び出す

}


自分でメソッドを設定する場合は、メソッドを呼び出すタイミングも設定出来ます



//第2引数で設定します。(1.0f毎に呼び出す)
this->schedule(schedule_selector(HelloWorldLayer::moveTime), 1.0f);


例 動画

            

経営育成ゲーム「わたしの動物園」をリリースしました!

cocos2dxを使って作成したアプリを作成しました。
無料で遊べますので、ぜひゲーム作りの参考にしてみて下さい!

【Sponsored Link】

更新履歴