Unityで基本的なAndroidゲームを作成する方法
「基本的なUnityプラットフォームゲームを作成する方法」というタイトルの以前のAppualのチュートリアル(およびそのパート2) 、Unityと組み込みのWebGLプラグインを使用して、シンプルなHTML5ベースのブラウザゲームを作成しました – この同様のチュートリアルでは、基本的な Androidを作成する方法について説明します。 Unityを使用したゲーム。
要件:
- 団結
- NotePad ++のような優れたテキストエディタ(オプションですが推奨)
- Android SDK
Unityを起動し、新しいプロジェクトを作成します。 2Dプロジェクトにします。
よく知っておくべきいくつかのパネルがあります–すべてのシーン要素を含む階層パネル(シーン=現在作業している「レベル」)。次に、エディター内でゲームをプレイ/テストするために使用される[ゲーム]タブがあり、右側には、照明や物理学などのさまざまなものを編集するインスペクターパネルがあります。
私たちが最初にやりたいことは、スプライトを作成することです–これが私たちの主人公(私たちが制御する)になります。目で正方形を描くように独自のスプライトを描くことも、インターネットからスプライトを取得することもできます。それが.PNGファイル(透明な背景)であることを確認してください。
スプライトをメインシーンウィンドウ(最大のウィンドウ)にドラッグアンドドロップします。これは、左側の[階層]パネルにも表示されます。
そこで、いくつかのプラットフォームを作成します。壁やその他のプラットフォームを作成するために簡単にサイズを変更できるため、これらは単純な正方形にすることができます。
したがって、新しい正方形の「スプライト」を作成し、スプライトキャラクターの場合と同じように、シーンウィンドウにドラッグアンドドロップするだけです。
次に、Unityにメインキャラクターに物理を与えるように指示する必要があります。メインのスプライトキャラクターをクリックし(シーンウィンドウで青色で強調表示されるはずです)、インスペクターパネルで「GameObjects」を探します。
「コンポーネントの追加>Physics2D>RigidBody2D」をクリックします。これにより、スプライトに物理演算が自動的に追加されます。これがなければ、別のSDKでスクリプトを作成する必要がありました。
メインスプライトキャラクターが制御不能に回転するのを防ぎたいので、インスペクターパネルで[コンストレイント]タブを見つけ(メインスプライトがシーンウィンドウで強調表示されたまま)、[回転Zをフリーズ]チェックボックスをオンにします。
[再生]ボタンを押すと、メインのスプライトキャラクターが空から落ちて、無限に落ちるはずです。後でそれを処理しますが、物理を簡単に適用できたことに注意してください。適用した物理学は、それらが適用されている形状によって異なります。たとえば、同じ物理学を球に適用した場合、球は転がります。
また、キャラクターが回転したり自由に動き回ったりしないように、向きを修正したいと思います。プレーヤーを選択した状態でインスペクターで「制約」を見つけ、チェックボックスをオンにして回転Zをフリーズします。もう一度[再生]をクリックすると、プレーヤーが空から無限の運命に落ちることがわかります。
メインのスプライトキャラクターが際限なく落下するのを防ぐために、コライダーを追加する必要があります。これは基本的に、メインのスプライトキャラクターに追加するシェイプのソリッドなアウトラインにすぎません。メインのスプライトキャラクターを強調表示し、[コンポーネントの追加]> [Physics2D]>[BoxCollider2D]をクリックします。
ここで、前に作成したプラットフォームでまったく同じことを行います。これで、メインのスプライトキャラクターがプラットフォームと「衝突」し、そこにとどまるはずです。
そこで、カメラがメインのスプライトキャラクターに追従することを確認したいと思います。シーン内には、すでにカメラオブジェクトが存在するはずです。これを上にドラッグします メインのスプライトキャラクター。
これは、3Dベースのランナーを作成する場合に特に重要です。 、Slopeのようなもので、カメラをメインのゲームオブジェクト(メインのスプライトキャラクター)の後ろに常に配置する必要があります。
次に、[階層]パネルに移動し、GameObjectsのリストで、カメラを下にドラッグします。 メインのスプライトキャラクター(Player GameObject)。これにより、メインのスプライトキャラクターが「親」になります。 カメラの。したがって、Player GameObjectが画面上を移動するときは常に、カメラが追従する必要があります。
したがって、このゲームチュートリアルでは、Run 3のような基本的なエンドレスランナータイプのゲームを作成します。このゲームでは、メインキャラクターが画面を横切って障害物をかわします(または、障害物にぶつかった場合は「ゲームオーバー」します)。これにはいくつかのスクリプトが必要ですが、そのほとんどはこのガイドで提供されます。
「アセット」フォルダを右クリックして、新しいフォルダを作成します– Scriptsという名前を付けます 。次に、この新しいフォルダーを右クリックし、[作成]> [C#スクリプト]をクリックして、 PlayerControlsという名前を付けます。 。このスクリプトは、メインのスプライトキャラクターの動作を定義します。
この新しいスクリプトをダブルクリックすると、はず Visual Studioで開きます–または、(そして私の個人的な好みで)NotePad++のようなもので編集できます。
スクリプトファイルには、すでに少しの「ボイラープレート」コードが含まれているはずです。基本的に、これはそのままにするか、ニーズに合わせて調整する必要があるスクリプトであり、時間を大幅に節約できます。そこで、新しいオブジェクトを追加します。
境界線より上voidStart():
公開 Rigidbody2D rb;
追加する必要のある次のコードはStart()内にあり、剛体を見つけるために使用されます。基本的に、GameObjects(メインのスプライトキャラクター)にアタッチした物理演算を見つけるようにUnityに指示し、Start ()は、新しいオブジェクトまたはスクリプトが作成されたときに実行されます。
次に、物理オブジェクトを見つけます。
rb = GetComponent<Rigidbody2D>();
そして、この行をUpdate()
内に追加しますrb.velocity = new Vector2(3, rb.velocity.y);
Update()が行うことは常に更新されるため、そこに追加されたコードはすべて継続的に実行されます(オブジェクトが破棄されない限り)。つまり、Y軸で同じ速度(rb.velocity.y)を使用し、水平軸で3の速度を使用して、剛体に新しいベクトルを持たせるようにスクリプトに指示します。将来的には、「 FixedUpdate()」を使用することもできます スクリプトの更新/更新量を制御できるため、これは似ていますが異なります。
スクリプトを保存してUnityに戻り、メインのスプライトキャラクターをクリックしてハイライトします。 [インスペクター]パネルで、[コンポーネントの追加]> [スクリプト]に移動し、保存したスクリプトを追加します。これで、[再生]ボタンをクリックすると、メインのスプライトキャラクターがプラットフォームの端に向かって継続的に移動するはずです。
プレーヤー入力コントロールの作成
これは障害物のある無限のランナースタイルのゲームであるため、「ジャンプ」ボタンなどのコントロールをプレーヤーに追加する必要があります。
以前からスクリプトを再度開いて、次のコードを追加します:
if (Input.GetMouseButtonDown(0)) { rb.velocity = new Vector2(rb.velocity.x, 5); }
これをUpdate()メソッド内に配置します。基本的には、プレーヤーがマウスボタン(Androidではスクリーンタップとして変換されます)をクリックすると、メインのスプライトキャラクターが「ジャンプする」ことをUnityに通知します。 " 空の上に。これは、Y軸に5の値でベロシティを追加したためです(もちろん、値が大きいほどジャンプが大きくなります)。
コーディングにあまり詳しくない場合は、 Ifを使用しました もし 基本的には「実行するかしないか」の種類の命令です。文字通りこれが発生した場合は、このコマンドを実行してください 。したがって、プレーヤーがマウスをクリックしていない(またはAndroid画面をタップしていない)場合、明らかにスクリプトは実行されません。
先に進み、[再生]ボタンをクリックして、正しく機能することを確認してから続行してください。
次に、障害物(メインキャラクターのスプライトを「破壊」する可能性があります)、ゲームスコア、および「ゲームオーバー」メニューを追加します。
これまでにゲームをテストした場合、これまでに発生した唯一の問題は、作成した「ジャンプ」ボタンを押すと、接地されているかどうかに関係なく、キャラクターがジャンプすることです。これは基本的にゆるい鳥であり、のようなランナーではありません。欲しい。しかし、それを修正するつもりです。
スクリプトに、このコードを上に追加します Update()メソッド:
public Transform groundCheck; public Transform startPosition; public float groundCheckRadius; public LayerMask whatIsGround; private bool onGround; And then add this next line to the Update method above the if statement: onGround = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround); And next you will change this following line to include “&& onGround” if (Input.GetMouseButtonDown(0) && onGround) { So our entire script should basically look like this: public class PlayerControls : MonoBehaviour { public Rigidbody2D rb; public Transform groundCheck; public Transform startPosition; public float groundCheckRadius; public LayerMask whatIsGround; private bool onGround; void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { rb.velocity = new Vector2(3, rb.velocity.y); onGround = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround); if (Input.GetMouseButtonDown(0) && onGround) { rb.velocity = new Vector2(rb.velocity.x, 5); } } }
私たちが行ったことを説明するために、ゲームの世界での位置を意味する新しい「変換」を作成しました。半径を設定し、半径が「地面」レイヤーと重なっているかどうかを確認するようにUnityに指示しています。したがって、半径が「地面」と同期している場合、キャラクターはジャンプできるはずです。 'ジャンプからすでに空中にいるので、再びジャンプすることはできないはずです。基本的に、 onGround もしなら真になります GroundCheckという名前の変換 地層と重なっています。うまくいけば、それは理にかなっています。
スクリプトを保存してUnityに戻ると、プレーヤーを強調表示した後、インスペクターにオプションが追加されていることがわかります。これらはパブリック変数であり、好みに合わせて調整できます。
次に、階層を右クリックして新しい空のオブジェクトを作成し、それをドラッグして、メインシーンウィンドウのメインキャラクタースプライトの下に配置します。この空のオブジェクトを、床を検出する場所に配置します。オブジェクトの名前を「CheckGround」に変更してから、前にカメラで行ったように、プレーヤーのゲームオブジェクトの下にドラッグします(オブジェクト間に親子関係を作成するため)。これで、空のオブジェクトはカメラと同じように主人公のスプライトに従い、床の距離を継続的にチェックします。cam
次に、メインキャラクターのスプライトを選択し、インスペクターパネルに移動します。CheckGroundオブジェクトを「groundCheck」と呼ばれるスペースにドラッグします。 「変換」の位置は、この新しいオブジェクトの位置と同じである必要があります。「半径」と表示されている場合は、0.1にします。
グラウンドレイヤーを定義する必要があります。地面の地形を選択し、インスペクターで[レイヤー:デフォルト]のボタン(ドロップダウンボックス)を見つけて、[レイヤーの追加]を選択します。
次に、プラットフォームのレイヤーとして「グラウンド」を選択し、ゲームウィンドウ内の他のプラットフォームに対してこれを繰り返します。メインキャラクターのスプライトオブジェクトに「グラウンドとは」と表示されている場合は、グラウンドレイヤーも選択します。
私たちが行ったことは、チェックを実行するようにプレーヤースクリプトに指示することです– if 画面上の小さな点がレイヤーに一致するものと重なっている場合、これが当てはまる場合にのみキャラクターがジャンプします。
衝突とゲームメニューのゲームオーバー
まとめると、最後にやりたいことは、A:障害物との衝突でゲームオーバーになること、B:もう一度プレイボタンが付いた「ゲームオーバー」メニュー画面を作成することです。
基本的にやりたいことは:
- プレーヤーを追加します オブジェクトを作成し、剛体を割り当てます およびコライダー それにあなたの選択の。
- 敵を追加します オブジェクトを作成し、剛体を割り当てます およびコライダー それにあなたの選択の。 (オプションで、「敵」タグを追加 それに)
- 新しいC#スクリプトを作成する それをコンポーネントとしてプレーヤーに追加します (または、プレーヤーに添付されているスクリプトを使用します。既にある場合は、新しいスクリプトを作成する必要はありません)
- これをスクリプトに追加します:
void OnCollisionEnter(Collision coll){ Debug.Log("Collision"); //Check to see if it even registers a collision, if it works you can remove this line if(coll.gameobject.tag == "Enemy"){ //sees if the object your player collided with has a tag called "Enemy", this can be replaced with if(coll.gameobject.name == ... but using a tag is an easy way to do it. //Add your code here, like: Application.LoadLevel("GameOver"); Debug.Log("Working"); //if working, you can remove this line. }
そのサンプルスクリプトを試してみてください。試行錯誤を繰り返すことで、必要なことを正確に実行できるようになります。
Playボタンを使用してGameOverの「レベル」を作成する方法を正確に確認するには、Appualのガイド「基本的なUnityプラットフォームゲームポイントを作成する方法」の最後のセクションを参照してください。 2インチ。
-
Android でゲームをハックする方法
あなたが Android フォンを使用しているゲーマー兼コーダーである場合、従来の広告の中断を回避するオプションや、ゲームに関するその他のオプションを確実に検索するでしょう。この記事を使用すると、Android フォンでゲームをハッキングする方法と、ハッキング ツールを使用してゲーム体験を強化する方法を知ることができます。特定のレベルで行き詰まっていて、簡単に次のレベルに進みたい場合は、ここにリストされているアプリを使用してゲームをハックできます。そのようなアプリの 1 つに Lucky Patcher があります。Lucky Patcher を使用してゲームをハッキングする方法についても詳し
-
Learn Math App:Game of Numbers で基本的な算術演算を学習する方法
数学が怖い?うん!私も数字と、数字で何ができるかが怖かったです。しかし、数学を避けることは解決策ではなく、子供たちに教えることもできません. Learn Math App by Systweak をご紹介します。これは、お子様が数学に興味を持ち、クールなトリックを学ぶのに役立つ楽しいアプリです。このアプリで彼らが問題を解いてメダルを獲得するのを見ながら、いくつかのゲームを試してみて、数学への恐怖心を取り除けないまでも減らすことができます。 Learn Math App:- 機能と仕様 Learn Math App Software は、1 年生から 8 年生までの子供たちに基本的な算術演