Comments前回に引き続き、ブロック崩しの作成について、説明していきます。ボールの移動処理についてです。ブロック崩しのボールアクションにはいくつか種類があります。「ボールの発射」「壁やブロックにぶつかった場合の跳ね返り」等です。これらをすべてをcocos2dのアクションで行うのは、あまり効率的とは言えません。プログラムには、無料で使用することの出来るライブラリが多々あります。今回はその中の一つである、Box2dというライブラリを使用してアクションを行っていきたいと思います。Box2dというのはゲーム用の「2D物理エンジン」で、cocos2d-htmlに標準で入っています。詳しくはWikipediaをご覧ください。使用するために、下記ファイルの一部を修正します。Cocos2d-html5-v2.2.1┗HelloHTML5World┗cocos2d.js//変更前box2d:false,//変更後box2d:true,これでBox2dを使用するために準備が終わりました。それではさっそく、Box2dを使用したコーディングに入りましょう!Box2Dのベースを作成します。グローバル変数に以下を追加します。Array();PTM_RATIOとは、コメントでも書いてありますが1メートルあたりのピクセル値です。なんでメートル?と思われる方もいると思いますがこれはcocos2dでは座標やアクション移動量等の長さの単位にピクセルを使用しているのに対してbox2dではメートルを使用しています。その為、1メートルあたりのピクセル値を設定してあげる必要があるのです。次に、b2World(box2dでの物理世界)の生成を行います。init内に以下を追加します。true);world.SetContinuousPhysics(true);以下の関数も追加しましょう。cc.RADIANS_TO_DEGREES(b.GetAngle()));}}},addNewSpriteWithCoordsは、Spriteにbox2dを使用する上で必要な要素を設定している関数です。引数で、”Spriteのオブジェクト”、”CCpoint(座標)”、”Spriteの幅”、”Spriteの高さ”、”dynamicの真偽”を受け取っています。初めのif文で、動的か静的かの判定を行っておりdynamicがtrueの場合は動的(DynamicBody)、falseの場合は静的(StaticBody)になります。SetAsBoxでボックスシェイプを生成し、その後に摩擦係数や反発係数などを設定した上で物理オブジェクトを返しています。※シェイプについてはこちらをご覧ください。updateは、フレーム毎に呼ばれるメソッドでこのメソッドによって物体の座標変更(移動)や回転を行っています。上記関数を使用して、配置済みのバーとブロックに物理オブジェクトを生成します。false);updateメソッドを呼ぶ処理も忘れずに記載。this.scheduleUpdate();先ほど生成したバーの物理オブジェクトを、バーSpriteと同時に動かすためにMove関数内に以下を追加します。PTM_RATIO));最後に、バー上に存在する弾を発射するための処理をTouchesEndedメソッド内に追記します。Math.cos(ball_angle)));これで弾の発射と、ブロック及びバーに衝突した時の跳ね返る動作が可能になります。左右の壁の反発設定やブロックが消える処理など残っているものはたくさんありますが、大体の形は見えてきました。box2dという物理エンジンを使用する以上、今までより内容が少し難しいですが頑張って作成していきましょう。以上で、本記事は終了となります。今回の処理を追記したソースコードはこちら。<次回以降の更新について>次回は、左右の壁やブロック等、box2dの実装について引き続き説明していきます。コメントをキャンセルメールアドレスが公開されることはありません。BlogFeathersFeathersHTMLJavaScript。