ホームページ >バックエンド開発 >PHPチュートリアル >ゲーム開発シリーズ 1 ゲーム内の敵 1_PHP チュートリアル

ゲーム開発シリーズ 1 ゲーム内の敵 1_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:26:11876ブラウズ

ゲーム開発シリーズ 1: ゲーム内の敵 (1)
http://www.flashempire.com/school/tutorview.php?id=530
現在の Flash では、まともなゲームを開発することは何もありません。 何か奇妙なことが起こりました。ここで取り上げる内容はゲーム開発に関するものですが、比較的基礎的な知識ばかりです。ゲーム開発の専門家であれば、ここで説明する内容は完全に無視していただいてかまいません。私の計画は一連のチュートリアルを行うことであり、これはそのうちの 1 つです。
ゲームは、簡単に言うとインタラクティブな作品であり、ユーザーの行動が作品の進行に一定の影響を及ぼします。ゲームの話になると、必ず難易度が語られます。ある目標を達成したいとき、それを達成するのが難しいほど、難易度は高くなります。 。ゲームの種類が異なれば、難易度も異なり、実装方法も異なります。たとえば、テトリスはブロックの落下速度を変更することでゲームの難易度を変更し、空戦シューティング ゲームはさまざまな敵機やさまざまなボスによってさまざまな難易度を実現します。
このシリーズでは、ゲーム内の敵の動きを皆さんと一緒に少しずつ研究していきたいと思います。 AS についての基本的な知識を持っていることが最善です。そうしないと、少し頭が痛くなるでしょう。
1. 最も直接的な追跡
まずこの例を見てください:
赤い丸がプレイヤー、緑の丸が敵であると仮定して、マウスを動かすと敵が追いかけてきます。
これは敵を追跡する最も簡単な方法です。その原理は、 if (プレイヤー x 座標 敵 x 座標) { 敵 x 座標を調整し、プレイヤー x 座標に近づく} if (プレイヤー y 座標 敵 y 座標) { 敵 y を調整する。プレイヤーの y 座標に近づく座標}
これは非常に理解しやすいはずです。では、具体的なコードの実装はどのようになるべきでしょうか?
まずステージ上に 2 つの異なる MovieClip を配置し、1 つのインスタンスをプレイヤーと呼び、もう 1 つをエネミーと呼びます。
便宜上、プレーヤーの移動にはマウスのみを使用するため、コードは非常に単純です: player._x = _xmouse-10;player._y = _ymouse-10;updateAfterEvent();
プレーヤーは移動できます。以下の座標調整問題を解いてみましょう。 ゲーム開発シリーズ 1 ゲーム内の敵 1_PHP チュートリアル


上の図を見てください。プレイヤーと敵がどこにいても、重ならない限り、2 人のキャラクターの間には常に一定の距離があります。x 方向と dy の差を表すのに使用します。 y方向。 dxとdyによれば、敵がプレイヤーに近いという概念に基づいて、敵が移動すべき方向を導き出すことができます。
敵には一定の速度があり、その速度に基づいてプレイヤーに近づく必要があります。したがって、最初に、敵の速度を表す変数、emoneSpeed を定義できます。
分析に基づいて、次の計算式を導き出すことができます: dx = player._x-emy._x; dy = player._y-emy._y if (Math.abs(dx)>=enemies._x) + = ((dx>=0) ? 敵の速度: -敵の速度); } if (Math.abs(dy)>=敵の速度) { 敵._y += ((dy>=0) ? 敵の速度: -敵の動きを制限するために Math.abs(dx)>=emoneSpeed を使用していることがわかります。実際には制限する必要はありませんが、敵の速度が比較的高い場合はジッターが発生します。起こる。この場合、敵の座標とプレイヤーの座標の差が小さいため、接近中に敵が揺れ続ける可能性があります。制限を解除して試すことができます。
AS に詳しくない人のために、この文を説明しましょう: 敵._x += ((dx>=0) ? 敵速度 : -敵速度)、これは実際には次の文と同等です: if (dx > = 0){ 敵._x = 敵._x + 敵速度; } else { 敵._x = 敵._x - 敵速度 }
これは、敵の移動方向を決定するために使用されます。 dx dy、どの方向に移動するかを決定します。
さて、ここまではすべてわかりやすく説明できたと思います。最初のフレームの完全なソース コードは次のとおりです。 var evil:Number = 2;var dx, dy:Number;/* function */tracker = function () { player._x = _xmouse-10; player._y = _ymouse-10; dx = player._x-敵._y; if (Math.abs(dx)>=敵の速度) ._x += ((dx>=0) ? 敵の速度: -敵の速度); } if (Math.abs(dy)>=敵の速度) { 敵._y += ((dy>=0) ? 敵の速度: -emoneSpeed) ; } updateAfterEvent();};/* run it*/setInterval(tracker, 10);
AS初心者向け:プログラムはまず敵の移動速度を決定する変数を定義します これは変更可能です。主にプレイヤーの移動と敵の移動を処理するために使用されます。 updateAfterEvent はスムーズさを確保するために設定されており、なくても問題ありません。
トラッカー関数がトリガーされない場合、プログラムは実行されません。そのため、setInterval を使用して、10 ミリ秒ごとにトラッカー関数をトリガーします。このようにすると、プログラムは正常に実行されます。
今回の紹介は以上です。次回は今の敵にちょっとした機能を追加したり制限したりしてみます。
ソースコードはこちらからダウンロードしてください。

http://www.bkjia.com/PHPjc/531979.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/531979.html技術記事ゲーム開発シリーズ 1: ゲーム内の敵 (1) http://www.flashempire.com/school/tutorview.php?id=530 現在の Flash では、まともなゲームを開発することは珍しくありません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。