前回の講座では、鳥を回転させたり、パチンコの上でジャンプさせたり、外力を利用して飛び出す方法を紹介しましたが、何もしなければ鳥はそのまま画面から飛び出してしまいます。この記事 今回は鳥の動きをカメラに追従させます。以下に前回の講義へのリンクを貼っておきますので、まだ前回の講義を読んでいない方はぜひご覧ください。
html5ゲーム開発-Angry Birds-オープンソース講座(1)-ポップアップバードに飛び込む
http://blog.csdn.net/lufy_legend/article/details/7765599
カメラを特定のオブジェクトに追従させる方法に関して、私の最初のアイデアは、物理世界のすべてのオブジェクトをループし、鳥を参照オブジェクトとして使用し、その後、他のオブジェクトの相対座標を計算してレンズ追従を実現することでした。ただ、毎回全オブジェクトをループするのはちょっと面倒だなと思い、box2djsの作者であるtechnohippyさんに具体的に聞いてみたところ(box2dwebとbox2djsの原理は同じなので)、たどり着いた結論は以下の通りでした。私の場合、すべてのオブジェクトをループする必要があります。座標計算はゲーム内にあるので、あまり心配しないでください。そこで、座標計算を同期関数としてカプセル化し、1.4.1 の拡張 js に追加しました。この関数の使い方について説明します。
前回の講義では、マウスが上に跳ね上がった際に、bounceイベントのlisten関数downOverで鳥に力が加わり、鳥が飛び出しました。次に、downOver関数にコード行を追加します
backLayer.addEventListener(LEvent.ENTER_FRAME,onframe);
次に、ループ再生関数は次のとおりです
function onframe(){ backLayer.x = LGlobal.width*0.5 - (bird.x + bird.getWidth()*0.5); if(backLayer.x > 0){ backLayer.x=0; }else if(backLayer.x < LGlobal.width - 1600){ backLayer.x = LGlobal.width - 1600; } LGlobal.box2d.synchronous(); if(bird && bird.x > backLayer.getWidth()){ backLayer.removeChild(bird); bird = null; } }
まず、鳥の座標を介してbackLayerレイヤーの相対座標を計算します。 backLayer の座標がゲーム画面外に移動するのを防ぐためです。
そして、鍵となるのは次のコード行です
LGlobal.box2d.synchronous();
これは、物理世界のすべてのオブジェクトの座標の再計算を実現します
最後に、鳥が画面の外に出ると、鳥は削除されます。
上記の 1600 は効果を見るためなので、ゲーム世界は少し長めに設定されています。
以下はレンダリングとテスト接続です。鳥を撮影して、カメラが鳥と一緒に動くかどうかを確認できますか?
http://lufy.netne.net/lufylegend-js/lufylegend-1.4/box2d/sample03/index.html
効果をより明確にするために、豚といくつかのオブジェクト
まず Pig クラスを作成します
function Pig(){ base(this,LSprite,[]); var self = this; var bitmap = new LBitmap(new LBitmapData(imglist["pig1"])); self.addChild(bitmap); self.addBodyCircle(bitmap.getWidth()*0.5,bitmap.getHeight()*0.5,bitmap.getWidth()*0.5,1,.5,.4,.5); }
次に、setStage 関数を作成してオブジェクトを作成します
function setStage(img,x,y,rotate,m){ var stageLayer = new LSprite(); backLayer.addChild(stageLayer); var bitmap = new LBitmap(new LBitmapData(imglist[img])); stageLayer.addChild(bitmap); stageLayer.x = x; stageLayer.y = y; stageLayer.addBodyPolygon(bitmap.getWidth(),bitmap.getHeight(),1,m,.4,.2); if(rotate != 0)stageLayer.setRotate(rotate*Math.PI/180); }
上記の準備により、最初に gameInit 関数をいくつかのオブジェクトをゲームに追加するのは非常に簡単です。次のコード
setStage("stage03",1070,430,0,10); setStage("stage01",995,300,90,1); setStage("stage01",1140,300,90,1); setStage("stage02",1070,200,0,1.5); setStage("stage04",1090,200,0,2); var pig = new Pig(); pig.x = 1150; pig.y = 400; backLayer.addChild(pig);
を追加して、5 つのオブジェクトと豚を追加します。効果は図
に示すとおりです。ただし、これらを追加したため、上の画像は実際には表示されません。ゲーム開始時の座標は (0,0) なので、まずカメラをゲーム画面の右側に移動します。ゲーム画面。
backLayer.x = LGlobal.width - 1600; LGlobal.box2d.synchronous();
言うまでもなく、backLayer の座標を変更しても、同期関数を呼び出す機能は、やはり物理世界の座標を再計算することです。
その後、画像が表示されたら、少し待ってから、カメラを鳥が座っている場所に戻します。実装方法は次のとおりです
LTweenLite.to(backLayer,1, { x:0, delay:2, onUpdate:function(){ LGlobal.box2d.synchronous(); }, onComplete:run, ease:Sine.easeIn } );
ご覧のとおり、LTweenLite イージングとパラメーター遅延を使用しています。 2 は、2 秒のイージング遅延後に実行し、イージング プロセス中に backLayer の x 座標を 0 に戻し、このようにして物理世界の座標を計算することを意味します。最初は画面の右側に表示されますが、すぐに左側に移動して、その効果を見てみましょう。ご覧のとおり、lufylegend ライブラリを box2dweb と組み合わせて使用するのは非常に簡単です。物理ゲームを作成してみませんか
http://fsanguo.comoj.com/download.php?i=AngryBirds2.rar
今回はここまでです。衝突検出は次の講義に任せましょう。第 3 回の講義では、鳥たちはその力を誇示し、画面上の豚を粉々に叩きのめしますので、ご期待ください。
上記は、HTML5 ゲーム開発 - Angry Birds - オープンソース講座 (2) - 鳥のレンズをたどる の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.ん)!

HTML5は5つの重要な改善をもたらします。1。セマンティックタグにより、コードの明確性とSEO効果が向上します。 2.マルチメディアサポートは、ビデオとオーディオの埋め込みを簡素化します。 3。フォームエンハンスメントは、検証を簡素化します。 4.オフラインおよびローカルストレージにより、ユーザーエクスペリエンスが向上します。 5。キャンバスとグラフィック機能は、Webページの視覚化を強化します。

HTML5のコア機能には、セマンティックタグ、マルチメディアサポート、オフラインストレージ、ローカルストレージ、フォームエンハンスメントが含まれます。 1。コードの読みやすさとSEO効果を改善するためのセマンティックタグなど。 2.ラベルでマルチメディアの埋め込みを簡素化します。 3。アプリケーションキャッシュやLocalStorageなどのオフラインストレージとローカルストレージは、ネットワークのない操作とデータストレージをサポートします。 4.フォームエンハンスメントでは、処理と検証を簡素化するための新しい入力タイプと検証プロパティを導入します。

H5は、さまざまな新機能と機能を提供し、フロントエンド開発の機能を大幅に向上させます。 1.マルチメディアサポート:メディアを埋め込んで要素を埋め込み、プラグインは必要ありません。 2。キャンバス:要素を使用して、2Dグラフィックとアニメーションを動的にレンダリングします。 3。ローカルストレージ:ユーザーエクスペリエンスを改善するために、ローカルストレージとセッションストレージを介して永続的なデータストレージを実装します。

H5とHTML5は異なる概念です。HTML5は、新しい要素とAPIを含むHTMLのバージョンです。 H5は、HTML5に基づくモバイルアプリケーション開発フレームワークです。 HTML5はブラウザを介してコードを解析およびレンダリングしますが、H5アプリケーションはコンテナを実行し、JavaScriptを介してネイティブコードと対話する必要があります。

HTML5の重要な要素には、最新のWebページの構築に使用される、、,,,,などが含まれます。 1.ヘッドコンテンツを定義します。2。リンクをナビゲートするために使用されます。3。独立した記事のコンテンツを表します。4。ページコンテンツを整理します。5。サイドバーコンテンツを表示します。

HTML5とHTML5の略語であるHTML5とH5の間に違いはありません。 1.HTML5はHTMLの5番目のバージョンであり、Webページのマルチメディア関数とインタラクティブ機能を強化します。 2.H5は、HTML5ベースのモバイルWebページまたはアプリケーションを参照するためによく使用され、さまざまなモバイルデバイスに適しています。

HTML5は、W3Cによって標準化されたHyperText Markup言語の最新バージョンです。 HTML5は、新しいセマンティックタグ、マルチメディアサポート、フォームの強化、Web構造の改善、ユーザーエクスペリエンス、SEO効果を導入します。 HTML5は、Webページ構造をより明確にし、SEO効果をより良くするために、、、、、、などの新しいセマンティックタグを導入します。 HTML5はマルチメディア要素をサポートしており、サードパーティのプラグインは不要で、ユーザーエクスペリエンスと読み込み速度が向上します。 HTML5はフォーム関数を強化し、ユーザーエクスペリエンスを向上させ、フォーム検証効率を向上させるなどの新しい入力タイプを導入します。

クリーンで効率的なHTML5コードを書き込む方法は?答えは、タグのセマンティック、構造化されたコード、パフォーマンスの最適化、一般的な間違いを回避することにより、一般的な間違いを避けることです。 1.コードの読みやすさとSEO効果を改善するには、セマンティックタグなどを使用します。 2。適切なインデントとコメントを使用して、コードを構造化して読みやすいままにします。 3.不必要なタグを減らし、CDNを使用してコードを圧縮することにより、パフォーマンスを最適化します。 4.タグが閉じていないなどの一般的な間違いを避け、コードの有効性を確認してください。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版
中国語版、とても使いやすい

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









