Cocos2d-x ゲーム制作

ゲーム制作 Cocos2d-x関連 第5回 「ボールを動かそう」

投稿日:2016年7月2日 更新日:

今回はCocos2d-xのupdateメソッドでボールを動かしていきます。

 

さて前回の続きですが、

  1. ボールをタップすると矢印画像を表示する。
  2. そのままタップを移動することで、矢印画像を360度回転できる。
  3. タップを離すとボールが指定された角度で移動する。矢印画像は削除する。

 

という3つの仕様がありました。残っているのは仕様3の「タップを離すとボールが指定された角度で移動する。」というところです。

 

プログラム実装

それではプログラムを記述していきましょう。以下のコードを追加してください。

HelloWorldScene.h

    void update(float dt);
    int _speed = 50;
    bool _isBallMoving = false;

 

 

HelloWorldScene.cpp HelloWorld::init

scheduleUpdate();

 

 

HelloWorldScene.cpp HelloWorld::update

void HelloWorld::update(float dt){
    if(_isBallMoving){
        float x = _ball->getPosition().x - _speed*cosf(CC_DEGREES_TO_RADIANS(_degree));
        float y = _ball->getPosition().y + _speed*sinf(CC_DEGREES_TO_RADIANS(_degree));
        _ball->setPosition(Vec2(x, y)); 
    }
}

 

 

HelloWorldScene.cpp HelloWorld::onTouchEnded

void HelloWorld::onTouchEnded(Touch* pTouch, Event* pEvent){

    if(_allow != nullptr){
        _allow->removeFromParent();
        _allow = nullptr;
    }
    _isBallMoving = true;
}

※前回のonTouchEndedに、ハイライトしている7行目を追記して下さい。

・update
cocos2dxのメソッドで、デフォルトではユーザの操作有無に関わらず、1/60秒毎に実行されます。この中でボールの位置座標を更新することでボールが動いているように見えます。

 

 

プログラム解説

ボールの移動処理

画面をタップした際に角度を取得します。取得した角度にスピードとCos、Sinで計算して得られたX軸方向の移動量、Y軸方向の移動量を、updateメソッド内でボールの座標に加減算することでボールの移動が可能になります。
updateは1/60毎に実行されます。この1/60秒はよくフレームと呼ばれます。他のゲームやテレビも、フレーム毎に画面を更新することで動きを表現しているわけです。

 

ボールの移動タイミング

「_isBallMoving」フラグを定義してタップを放した際にtrueにします。そうすることで、タップを放したタイミングでupdate内部の処理が有効になり、ボールの移動が可能となります。

 

 

シミュレータの起動

それではシミュレータを起動しましょう。

5_sc_simu

土星に向けてスイングバイ!どうでしょうか。ボールが移動したかと思います。そしてそのまま画面外へ・・・

 

次回はボールを画面外に飛ばさないようにしたいと思います。

 

 

次回

第6回 「画面端でのボールの跳ね返り」

 

PrainGoogleAdSense

PrainGoogleAdSense

-Cocos2d-x, ゲーム制作
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

cocos2dx

Cocos2d-x クライアント側の処理とデータ送信(Httpリクエスト)

この記事は「Cocos2d-x セーブデータをサーバに送信して保存する」の続きになります。   ・第1回 : サーバにデータを保存したい理由と全体の流れ ・第2回 : クライアント側の処理と …

cocos2dx

ゲーム制作 Cocos2d-x関連 第1回 「ゲームを作ろう!!」

ゲーム制作をやってみたい!   誰もが一度はちらっと考えることなのではないでしょうか。しかし一度はそう思うものの、でもやっぱり難しそうだし・・・と思いとどまる方も少なくないはず。 &nbsp …

シミュレータ

ゲーム制作 Cocos2d-x関連 第4回 「画面タッチに反応して画像を出そう」

画面を眺めててもゲームにはならないよ。画面タッチしたいんだけど!   前回までで画像を表示できるようになりましたが、コレではまだゲームとは言えませんね。 今回と次回で、ボールをタップしたら好 …

SDKBoxを使ってアプリ内課金をするやり方 インストール編

この記事では、アプリ課金のためのSDKBoxインストールのやり方を説明します。   環境 XCode:7.3.1 Cocos2d-x:3.9     SDKBoxについて …

遊びを繋げ新たな地平へ プレイン Prain

ゲーム制作 Cocos2d-x関連 第9回 「移動しているボールの減速」

この辺りで大体折り返し地点です。   さて、弾いたボールはだんだんと減速していくようにしましょう。色々なやり方があるかと思いますが、今回はシンプルにupdateの中でカウンタを回して、一定回 …