良い一日! この記事では、Unityゲームエンジンを使用してゲームを開発した経験を共有したいと思います。
ゲームのコンセプトは、宇宙船を制御し、できるだけ多くの流星を破壊する必要があるということです。 敵の宇宙船があなたの道に現れ、それがあなたに干渉し、破壊後、新しいタイプの武器が利用可能になることを選択した後、「カプセル」が現れます。 このゲームはGalaxy Desteroidと呼ばれます。
開発
ゲームのグラフィックは、次のテクスチャで構成されています。

これらのテクスチャに基づいて、次のプレハブが作成されました

ここで:
小惑星回転-破壊されるmet石
敵-敵の宇宙船
explosionasteroid、explosionenemy、explosionplayerは、パーティクルシステムを使用して作成された爆発アニメーションです。
gunactivator(s)は、ゲーム内のさまざまな種類の武器をアクティブにするカプセルです
それ以外はすべてレーザーなどです。 これが武器です。
ゲームには、メインメニューとゲームシーンの2つのシーンが含まれます。
メインメニュー

ここで、「メニュー」はメインメニュー、「1」はゲームシーンです。


背景として、「space」という名前のスプライトを使用し、その上にスペースが描かれています。

次に、スクリプト「menu.cs」を作成し(右クリック→[作成]→[C#スクリプト]を選択)、バックグラウンドで「ハング」します。 backgroundは、メインコントロール(START / EXIT)が作成される100%の透明度を持つスプライトであり、スペースは装飾用です。
スクリプトの内容:
using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization.Formatters.Binary; using System.IO; using UnityEngine.SceneManagement; public class menu : MonoBehaviour { public GUIStyle mystyle;
activemenuスクリプトを「スペース」に掛けることを忘れないでください。 メニューの背景の動きのアニメーションを作成するのに役立ちます。 次に、「スペース」のコピーを作成し、それを少し高くします。
Activemenuスクリプトの内容:
using UnityEngine; using System.Collections; public class activemenu : MonoBehaviour { float speed=-0.1f; void Start () { }
次のようになります。


ゲームシーンを作成する

ゲームシーンは、次の主要なオブジェクトで構成されています。
スペース(スプライト「スペース」)
プレイヤー
met石
敵船
その他(レーザーと爆発)。
スペースはメインメニューのように整理されます。 ここでは何も触れられません。
次に、ゲームではin石、ショット、敵などのオブジェクトから常に生成されることに注意する必要があります。 また、プレーヤーが見逃したオブジェクトは、もう一度メモリをロードしないように削除する必要があります。
これは次のように実行できます。 ステージ上に新しいゲームオブジェクトを作成し(「controlcountobjects」があります)、それにboxcolliderコンポーネントを追加し、ゲームゾーンの周りに引き伸ばします。

次に、次の内容のスクリプトを追加します。
using UnityEngine; using System.Collections; public class systemcontrolobjects : MonoBehaviour { void Start () { } void Update () { } void OnTriggerExit2D(Collider2D col) { Destroy(col.gameObject); } }
このスクリプトでは、controlcountobjectがボックスコライダーを終了すると、要素が削除されます。 したがって、オブジェクトが削除される特定のゾーンが終了時に取得されます。
Me石の生成
このスクリプトをカメラに追加します。
using UnityEngine; using System.Collections; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class blockgenerator : MonoBehaviour { public GameObject asteroid;

Me石
上記のように、ステージ上にさまざまなサイズで表示されるmet石と、それらも回転していることがわかります。 これは、met石が2つのGameObjectを使用して実装されているためです。


外部オブジェクト「asteroidrotate」はmet石の動きを表し、サークルコライダーを含み、衝突の際に爆発効果をトリガーします。一方、「aster」は作成時に回転速度とサイズをランダムに設定します。
asteroidrotateのスクリプト:
using UnityEngine; using System.Collections; public class asteroidlogic : MonoBehaviour { public GameObject explosion;
アスターのスクリプト:
using UnityEngine; using System.Collections; public class rotator : MonoBehaviour { int f; float sc; void Start () { f = Random.Range (-5, 5); sc = Random.Range (0.1f,0.2f); transform.localScale = new Vector3 (sc,sc,sc);
プレイヤー
宇宙船のあるスプライトをゲームシーンに投げ、ボックスコライダーを追加し(「Is Triger」をマークすることを忘れないでください)、リジボディを追加します(Y座標をフリーズする必要があります)。 これはすべて、プレーヤーが他のゲームオブジェクトと対話するために必要です。

また、パーティクルシステムコンポーネントを追加して、エンジンからのジェットを描写することもできます。

プレーヤーのスクリプトでは、explosionplayer、laser、laser3x、laser3xhorなどのプレハブとの「接続」が確立されます。 同様に、管理の組織と他の武器の活性化のための「カプセル」の選択。 このコントロールは、ゲームオブジェクトがユーザーの指の後ろに移動し、同時に発砲するように配置されています。
スクリプトの内容:
using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class carconroller : MonoBehaviour { public GameObject laser;

武器アクティベーター。

スクリプトの結果。
プレーヤーが削除され、破壊されたmet石の新しいレコードがファイルに記録されたら、メインメニューに移動する必要があります。
次の内容のスクリプトを作成し、カメラに接続します。
using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class Exit : MonoBehaviour { public GameObject target;
このスクリプトは、プレーヤーのステータスを監視します。
爆発
爆発効果は、パーティクルシステムを使用して作成できます。 しかし、それはループされ、永遠に繰り返されます。 これを防ぐには、爆発プレハブに次のスクリプトを追加します。
using UnityEngine; using System.Collections; public class DestroyAsteroid : MonoBehaviour { void Start () { } void Update () { Destroy (this.gameObject,0.4f);

ショット数
ショットは、プレイヤーの移動中にプレイヤーの位置から生成されます。

ショットのスクリプトでは、速度と方向のみを設定する必要があります。
using UnityEngine; using System.Collections; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class laser : MonoBehaviour { float speedlaser=0.5f; void Start () { } void Update () { transform.Translate (new Vector3 (0, speedlaser, 0f)); } }
相手の世代
敵の世代はmet石の世代に似ています。

Enemygeneratorスクリプトの内容:
using UnityEngine; using System.Collections; public class enemygenerator : MonoBehaviour { public GameObject enemy; bool trigtime=false; float speedreset=2f; float timer,x; void Start () { timer = speedreset; } void Update () { if (timer < 0) { timer = speedreset; trigtime = false; } if (timer == speedreset) { x = Random.Range (-2.5f, 2.5f);

敵の論理
敵の行動は、単純に直線で飛行し、発砲し、敗北した場合、プレイヤーが新しい武器を起動するためにカプセルを残すことができるように編成されています
次のようになります。


using UnityEngine; using System.Collections; public class enemylogic : MonoBehaviour { public GameObject explosionenemy;
武器を備えた「カプセル」の各プレハブは、プレイヤーに向かって移動するだけで、交差した場合には破壊されます。

using UnityEngine; using System.Collections; public class gunactivatorlogic : MonoBehaviour { float speed = -0.025f; void Start () { } void Update () { transform.Translate (new Vector3 (0, speed, 0f)); } }
まとめ

転記
Google Playでのゲームのリリースは特に成功しませんでした。 市場での滞在期間全体で、500件をわずかに超えるダウンロードが蓄積されました。
play.google.com/store/apps/details?id=com.WRXM4STER.SpaceStriker