この記事は、H5EDU 組織の公式 HTML5 トレーニング チュートリアルであり、主に以下を紹介します: JavaScript 拡張チュートリアル - cocosjs 衝突検出
ゲームの衝突検出原理を簡単に説明します: まず、各ゲーム オブジェクトの衝突検出領域を指定します。 Update メソッドで 2 つのオブジェクトの領域が重なっているかどうかをリアルタイムで検出します。重なっている場合は、衝突が発生します。
コードを簡単に見てみましょう。このコードは公式コードから抜粋したものです。
tools.CollisionHelper={ IsCollided:function(ccA,ccB){ var ax = ccA.x, ay = ccA.y, bx = ccB.x, by = ccB.y; /*if (Math.abs(ax - bx) > 5|| Math.abs(ay - by) >5) { return false; }*/ var aRect = this.MakeCollideRect(ccA); var bRect = this.MakeCollideRect(ccB); return cc.rectIntersectsRect(aRect, bRect); }, MakeCollideRect: function (ccA) { return cc.rect(ccA.x - 3, ccA.y - 3, 20, 20); } };
コードを簡単に説明します: 衝突検出中に、各ゲームオブジェクトの衝突領域が比較されます (上記のコードでは、領域の高さと幅は両方とも 20 です。この領域の座標は、現在のゲーム オブジェクトの座標から 3 を引いたものです。この 3 は、これら 2 つの領域の位置を取得した後、ゲーム内のさまざまなオブジェクトに応じて動的に調整する必要があります。 、それらを cc.rectInterestsRect 関数に送信するだけです。実際、エリア範囲の検出も cc.rectInterestsRect 関数内で行われます。
衝突後にゲームオブジェクトを非表示にしたい場合は、gameObject.setVisibility(false) を使用してください。
cc.fadeInとcc.fadeOutで衝突判定結果を利用することで、衝突アニメーションを簡単に作成できます