[クラシック ゲーム] 戦車戦 Unity2D プロジェクト コンバット (ナニー レベル チュートリアル)

メインコンテンツ:

1. Unity3D エンジンの基本設定。

2.2Dシーン構築、プレハブ制作。

3. 2Dアニメーションの制作。

4. 絵地図帳に関する知識。

5. コライダー、トリガー、衝突検出、トリガー検出。

6. 2D ゲームのレンダリングに関するある程度の知識。

7. 敵 AI のコンパイル。

8. UGUI関連コンテンツ、シーン切り替えなど

必要なリソース パックのリンク: https://pan.baidu.com/s/199wuwMiucKDQfZR54Skwxg?p​​wd=a6pa 
抽出コード: a6pa

- - - - - - - - - - 始める - - - - - - - - - -

1. 新しいプロジェクトを作成し、リソースをインポートします

新しい 2D プロジェクトを作成し、すべての画像テクスチャ モードを 2D ANDUI に変更します。

 2.シーンの構築

1. メインカメラの設定: サイズ (画面からの位置) を 8.5 に設定します。

2.背景が黒のゲーム表示に設定されます

3. ウィンドウは 5:4 に設定されています

4. アトラス処理: インポートしたマテリアルのテクスチャをスプライト (2D および UI) に調整し、適用をクリックします。

5. スプライト モード: マルチ (画像のデフォルトの属性は単一です。これは、ここでは画像が単一のスプライトとして扱われることを意味します)。

5.スプライト モード: マルチ (画像のデフォルトの属性は単一です。つまり、ここでは画像が単一のスプライトとして扱われます)

アトラスのカッティング (カットする必要があります): スプライト エディターをクリックします—スライス—自動—スライスをクリックします (サイズ変更、サイズを取得します)—サイズによるグリッド (固定サイズに従ってカットします)—スライスをクリックします—自分でカットして、適切なサイズ、W28H28を見つけて、切断サイズのサイズを記入するだけです。

3. ゲーム内プレハブの制作と2Dアニメーションの制作

1. Play1 を階層パネルにドラッグします。

2. Unity はメートル単位で開発され、タンクのスケールは 3、3、3 に調整されます。プレーヤーに名前変更されました

3. [プロジェクト] パネルで、プレハブを保存する新しいフォルダー Prefabs を作成し、プレーヤーにドラッグします。

4. 次に、マップの下の石、壁、水、草などを階層パネルにドラッグします。

5. 各画像のサイズ変更の問題を解決します。Sprite Render コンポーネントの下のスプライトが表示される画像を制御し、Ctrl+D を押して複数の同じオブジェクトをコピーし、画像をスプライトにドラッグします。

 

 

6. アニメーションとアニメーション コントローラーを保存するフォルダー「Animation」と「AnimatorControllerBorn」を作成します。

2D アニメーション: マウスをクリックして最初の画像を選択し、Shift キーを押したまま最後の画像を選択し、それを階層パネルにドラッグし、ポップアップ ウィンドウでアニメーションに名前を付け、「Born」という名前を付けて、その名前を「Born」に変更します。階層パネル。サイズを 3、3、3 に変更

 

7. アニメーションとアニメーション コントローラーを保存するフォルダーAnimation と AnimatorControllerBorn を作成します。

2D アニメーション: マウスをクリックして最初の画像を選択し、Shift キーを押したまま最後の画像を選択し、それを階層パネルにドラッグし、ポップアップ ウィンドウでアニメーションに名前を付け、「Born」という名前を付けて、その名前を「Born」に変更します。階層パネル。サイズを 3、3、3 に変更します。コントローラーの名前を BornController に変更し、アニメーションを含む対応するフォルダーにドラッグします。

プレハブ Prefabs フォルダーの下にマップ フォルダーを作成し、マップとエフェクト フォルダーを保存します。

同様に、爆発エフェクトBoomと無敵エフェクトBorn2を作成し、川の水のカメラギズモの表示をキャンセルし、カメラの隣にあるカメラをフォークオフします。

 4. プレイヤーの動きを制御する(プレイヤースクリプト)

 1. すべてのスクリプトを保存する新しいフォルダー Script を作成します。

 2. (プレイヤー) スクリプトを作成し、プレイヤータンクに追加します。

3. ゲーム オブジェクトの動きを制御します。Update 関数では、衝突とジッターの問題のため、FixedUpdate 関数で変更する必要があります。

 

 4. プレーヤーの動きを制御します - 画像をさまざまな方向に切り替えます (プレーヤー スクリプト)

1. Spriteコンポーネントを取得し、そのプロパティ値を変更します

2. レンダラーの参照を取得します。

 3. Awake 関数内 (最初に取得)、Start 関数の前

4. 画像を切り替えるための参照を取得します。対応する画像を Unity にドラッグします。

 

 5. コライダーの追加により、タンクの回転と揺れの問題が解決されます。

1. 衝突するオブジェクトにはコライダーが存在し、それらの 1 つ (できれば移動するオブジェクト) は剛体を持つ必要があります。

Player ゲームオブジェクトに Box Collider 2D (2D ゲームコライダー) と Rigibody 2D を追加し、重力を 0 に変更します。

 2. マップ内のすべてのオブジェクトに Box Collider 2D (2D ゲーム コライダー) を追加します。草は通過できるため、草は使用されません。

3. 回転の問題を解決します。Player ゲーム オブジェクトを選択し、Rigbody 2D の Constraints で上部の Z 軸を確認します。

 

4.ジッター問題の解決:Unityの組み込みライフサイクル機能(固定物理フレーム)

 

第六に、モバイル優先度の追加、2D レンダリング レベルの問題 (プレーヤー スクリプト)

1. 2 つのキーを同時に押して斜めに歩く問題を解決します。垂直優先。まず V を決定します

 

 2. 次に、移動を制御するコードをメソッドにカプセル化し、FixedUpdate で呼び出します。

 

3. レンダリングの優先順位: [レイヤー内の順序] レベルが高くなるほど、レンダリングが遅くなります。誕生、草は 1 に設定

4. 弾丸を追加し、レベルを 1 に設定し、それらを Tank フォルダーにドラッグしてプレハブを作成します。爆発エフェクトレベルも1に設定されています

 

 7. 戦車の攻撃方法と弾の方向(プレイヤースクリプト)

1. 弾丸プレハブの参照を取得し、弾丸の回転角度を定義します

2.スペースを押すと箇条書きがインスタンス化されます

3. 弾丸の向きの問題を解き、移動方法を書きます。画像を回転 - Z 軸を回転します

8. 弾丸移動スクリプトと攻撃CDを追加

1. バレットスクリプト(BulletFly)を作成し、Updateでバレットの動きを設定する

 

 

2. 弾丸 CD (プレーヤー スクリプト)
を設定してタイマーを設定し、弾丸のインスタンス化メソッドを追加して、ショットごとに時間をゼロにリセットします。

 

3. 弾丸にトリガーを追加し、Rigidbody2D を弾丸に追加し、重力を 0 に設定します。

 

 9、空気壁の製作、ラベルの追加

1. 通過できない岩を見つけて除去し、そのテクスチャを削除して空気の壁にします

2.各プレハブに対応するTag(タグ)を追加します

3. (BulletFly スクリプト) に完全な衝突検出を追加します。

 

 10. プレイヤーの無敵方法と死亡方法のまとめ(プレイヤースクリプト)

1.爆発効果、保護効果、復活の有無、無敵時間を宣言

2. タンクの死亡方法

 3. タンク無敵法

 4. 無敵エフェクトを戦車のサブオブジェクトとして配置し、レンダリング レベルを -1 に変更します。

 11. プレイヤーの弾と敵の弾を区別する

 1.(BulletFlyスクリプト)にプレイヤー弾かどうかの判定文を追加

2. プレイヤー戦車の弾丸生成時のステートメントを追加(プレイヤースクリプト)

12. プレイヤー誕生特殊効果(ボーンスクリプト)

1. 初期世代のプレイヤー用に Born スクリプトを追加しました

2. プレイヤーの戦車プレハブを Unity にドラッグします

 13. 敵の誕生効果(ボーンスクリプト)

同じ特殊効果を持つ2種類の敵をランダムに生成し、Bornのスクリプトコードを書き換え、用意した2種類の敵プレハブをUnityにドラッグします

 14. 敵AI(敵スクリプト)の作成

1. 敵の自動攻撃と移動のコードを記述する新しい (敵スクリプト) を作成し、そこにプレーヤー スクリプトをコピーして変更します。

攻撃方法を変更します。攻撃するためにスペースバーを押す必要はありません。自動的に攻撃します。

2.移動方法を変更する 

 

 15. マップ上にさまざまな要素を生成します (MapCreation スクリプト)

1. 「MapController」という名前の新しい空のオブジェクトを作成し、新しいスクリプト「MapCreation」を割り当てます。

2. 配列を使用してすべての要素を保存し、Unity にドラッグ アンド ドロップします。

 

3. オブジェクトをインスタンス化するメソッドを作成します (インスタンス化されたオブジェクトを、スクリプトが配置されているオブジェクトの下にサブオブジェクトとして配置できます)。

 4.故郷の場所、空気壁の場所を見つけて、カプセル化されたオブジェクトをインスタンス化するメソッドを通じてインスタンス化します。

 5. 壁、水、敵、障害物、草のオブジェクトをランダムに生成する場合、2 つのオブジェクトが 1 つの位置でインスタンス化されるのを防ぐために、配列を使用して使用された位置を記録する必要があります。

6. 位置をランダムに生成するメソッドを作成する

7. 位置リストに生成された位置と重複があるかどうかを確認します。

 8. ゲーム内の要素、プレイヤー、敵をインスタンス化する

16. プレイヤーの復活とスコアリング (PlayerController スクリプト)

 1. 新しいスクリプト「PlayerController」を作成し、インスタンスをインスタンス化します。

 2. Ctrl+R+E を素早く導入できる

 3. シングルトンをインスタンス化する

 4. ライフ値、スコア、死亡を宣言する

 5.復活方法(ライフ値が0の場合はスタート画面に戻る)

 6. Update で再生成メソッドを呼び出します。

7. 「プレーヤー スクリプト」 でプレーヤーが死亡した場合は、死亡メソッドを見つけて、isDead を呼び出すプロパティ値を追加します。

 

8. 「Enemy Script」 で敵が死亡した場合、死亡メソッドを見つけてスコアを呼び出す属性値を追加します

 Seventeen、UI制作

1. リソースの背景色を 5:4 背景色として使用し、メインカメラの色をグレーに調整します

2. ゲームウィンドウの比率は 16:10 に設定されています

3. 画像、テキストを使用してスコアとライフ値を作成します

4. (PlayerManager スクリプト) 2 つのテキスト属性を公開し、Unity でそれらを割り当てます。

 5.Updateでスコアとライフ値に応じてテキストを変更させます

 6. Unityでゲームの失敗の画像を作成し、それを割り当てる 

 7.アップデートでゲームの失敗を表示して実行を停止する

 ————————————————— 具体的な開発プロセスの終了 —————————————————

ゲーム内画像

おすすめ

転載: blog.csdn.net/Y1RV1NG/article/details/125408063