Unity

Last-modified: 2026-01-23 (金) 16:31:26

勉強した本はたのしい2Dゲームの作り方

Unityの枠組み

プログラム説明
開始using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
★タイトル「ABC」/*★タイトル*/public class ABC : MonoBehaviour{
①設定内容
★1回のみ/*★1回のみ*/void Start(){
②1回のみ内容
★継続}/*★継続*/void Update(){
③継続内容
★動き継続}/*★動き継続*/void Update(){
④動き内容
★他ファイル}/*★他ファイル*/
⑤ 
終了}

プログラム以外

表示

手順説明
画像の表示順変更インスペクター→レイヤーの順序数が大きいほど前に来る
画面のものを移動シーン左上→矢印ツール中央の四角をつかめば自由に動かせる
画面を動かすシーン左上→ハンドツール
画面から一時的に消すヒエラルキー→物体名の左側の目のマークゲーム実行中には表示される
画面から削除インスペクター→物体名のチェックを外すゲーム実行中も表示されない
画面で選択不可にするヒエラルキー→物体名の左側の指のマーク重なった物体を選択するときに使う。
保存ファイル→保存
新しくシーンを作り保存ファイル→新しいシーン→モードを選択
ファイル→別名で保存→scenesを選んでその中に保存
ファイル→ビルド設定→上の方に新しく作ったシーンをドラッグ
ゲームオブジェクトの複製を作るヒエラルキーの物体をプロジェクトのビューに入れる。プロジェクトビューに入った物体をシーンにドラッグすると複製できる。物体についているコンポーネントやプログラムもついた状態で複製できる。
プロジェクトのビューに入ったものを変えるとシーンのものすべてが変わる。
画面サイズ変更ゲーム→フリーアスペクト比をクリックして変更

動き

手順説明
画像のピボットを足元にする画像データを選ぶ→インスペクター→ピボットを下にする→適用するを押す拡大した時も足元の位置が変わらずに拡大される。
物体に重力をつけるコンポーネントを追加→Phisics 2D→Rigidbody 2D
キャラの場合はcontraints→回転を固定のZにチェックをつける
ゲームを開始すると下に加速して落ちるようになる
当たり判定をつける(四角)コンポーネントを追加→Phisics 2D→Box Collider 2D→コライダーの編集を押し調節できる
当たり判定をつける(楕円)コンポーネントを追加→Phisics 2D→Capsule Collider 2D→コライダーの編集を押し調節できる
物体にグループをつけるインスペクター→レイヤー→レイヤーを追加→User Layer6などに新しく名前を追加。
インスペクター→レイヤー→新しく作ったレイヤーを選ぶ
イベント判定をつける。コンポーネントを追加→Phisics 2D→Box Collider 2D→コライダーの編集を押し調節できる→トリガーにするにチェックをつける。
インスペクター→タグ→タグを追加→+を押し新しくタグの名前を入れSAVEを押す。
インスペクター→タグ→新しく作ったタグを選ぶ。
物体の当たり判定はないがぶつかったときにプログラムを実行できるようになる。
透明な物体ヒエラルキー→右クリック→空のオブジェクトを作成→当たり判定をつけるステージ外にキャラがはみ出なくなる
キャラが壁につかないようにする
(キャラの摩擦を0にする)
プロジェクト→2D→Physics Material 2D→flictionを0にする→キャラのコンポーネントを追加にドラッグジャンプして移動している状態で壁にぶつかると壁にくっついてしまう。

アニメーション

手順説明
パラパラ絵作成プロジェクトの複数の画像を選んでシーンにドラッグ。名前を付けて保存。
新しく四角のアイコンと三角のアイコンができる。
四角の名前を三角のアイコンの名前にする。
四角のアイコンをキャラの画像にドラッグする。
パラパラ絵ができる。三角のアイコンを押しサンプルからパラパラ絵の速度を変えられる。
パラパラ絵を作成2アニメーション→新しいクリップを作成→名前を付けて保存
プロパティを追加→Sprite Renderer→Sprite→+を押す
画像をドラッグする
パラパラ絵ができる。先ほどと違い画像の間隔を変えられる。
パラパラ絵のループをなくす三角のアイコン→時間をループのチェックを外す
パラパラ絵で透明になるものを作るプロパティを追加→Sprite Renderer→Sprite Renderer.Color→+を押す→カラーの左の△を押してメニューを開く→一番右の画像の時間をクリック→a(透過度)を0にする
初期アニメを変更する四角のアイコン→選んだアニメを右クリック→レイヤーデフォルトステートとして設定する

キャンバス

手順説明
キャンバスを設置ヒエラルキー→UI→画
Canvasをダブルクリック→インスペクター→レンダーモードをスクリーンスペース カメラにする→レイヤーの順序を10にする→レンダーカメラの項目にヒエラルキーのMain Cameraをドラッグする→ヒエラルキーのCanvasの下にあるImageをクリックし中央に移動させる
画像を設置Imageのインスペクターのソース画像にアセットの画像をドラッグする→アスペクト比を保存にチェックをつける
ボタンを設置ヒエラルキー→Canvasをクリック→UI→古い機能→ボタン→ボタンのソース画像ににアセットの画像をドラッグする→アスペクト比を保存にチェックをつける
ボタンの下にあるText(Legacy)をクリック→インスペクターのテキストに文字を入れる→フォントサイズを変える
パネルを設置ヒエラルキー→UI→パネル→パネルの中にボタンをドラッグパネルでボタンをまとめることができる
ボタンの設定プログラムを作成しボタンにつける。ボタンのインスペクター→クリック時()の+を押す→自分のオブジェクトをドラッグ→no functionをボタンのプログラムにする

プログラム

①②③④はそれぞれ書くプログラムの場所

プログラム説明
とりあえず書くもの①Rigidbody2D rbody;
②rbody = this.GetComponent<Rigidbody2D>();
rbodyを使ったプログラムが使えるようになる
←→移動①float 矢印X = 0.0f;float スピード = 3.0f;
③矢印X = Input.GetAxisRaw("Horizontal");
④rbody.velocity = new Vector2(矢印X * スピード, rbody.velocity.y);
→←の矢印キーで動きようになる。
Input.GetAxisRaw("Horizontal")は→をおせば1.0左を押せば-1.0になる。
rbody.velocity = new Vector2();でXY方向の動きをつける
移動によって画像の向き変更③if (矢印X == 1) { transform.localScale = new Vector2(1, 1); }
else if (矢印X == -1) { transform.localScale = new Vector2(-1, 1); }
→を押したら画像のスケールサイズを1,1にする。左を押したら-1,1にする。
画像を大きく使っている場合は2,2などに調節する。
ログ表示Debug.Log("あいう")コンソールにあいうを表示する。
レイヤー「地面」を使う①public LayerMask グラウンドレイヤー;
②グラウンドレイヤー = LayerMask.GetMask("地面");
グラウンドレイヤーの文字で地面のレイヤーを使えるようになる
レイヤー「地面」があるときジャンプする。①float ジャンプ = 9.0f;
③if (Input.GetButtonDown("Jump")) { ジャンプ機能 = true; }
④ bool 地面X = Physics2D.CircleCast(transform.position, 0.2f, Vector2.down, 0.0f, グラウンドレイヤー);
if (地面X == true &&ジャンプ機能 == true) {
Vector2 ジャンプパワー = new Vector2(0, ジャンプ);
rbody.AddForce(ジャンプパワー, ForceMode2D.Impulse);
ジャンプ機能 = false;
}
if (Input.GetButtonDown("Jump"))はスペースキーを押した時の意味。
Physics2D.CircleCast(transform.position, 0.2f, Vector2.down, 0.0f, グラウンドレイヤー);は下に地面があるときの意味。
←→移動を修正④if (地面X == true ||矢印X != 0) { rbody.velocity = new Vector2(矢印X * スピード, rbody.velocity.y); }前の状態だとジャンプ中に←ボタンを離すと真下に落下してしまう。
アニメを使う①Animator animator;
②animator=GetComponent<Animator>();
animatorが使えるようになる
地面にいて移動していないとき「待機」
地面にいて動いている時「動く」
地面にいないと時「ジャンプ」
②string 今アニメ = "";
string 昔アニメ = "";
④if (地面X == true)
{if (矢印X == 0) { 今アニメ = "プレイヤー待機"; }
else { 今アニメ = "プレイヤー動く"; }}
else{今アニメ = "プレイヤージャンプ";}
アニメが変わった時、今アニメを実行④if (今アニメ != 昔アニメ) { 昔アニメ = 今アニメ;animator.Play(今アニメ); }
トリガーに触れた瞬間「ゴール」、「落下」⑤void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.tag=="ゴール")
{ 〇〇〇 }
if (collision.gameObject.tag == "落下")
{ 〇〇〇 }
}

プログラム2

プログラム説明
UIを使用⓪using UnityEngine.UI;
一秒後に非表示にする②Invoke("インアクティブイメージ", 1.0f);
⑤void インアクティブイメージ()
{ メインイメージ.SetActive(false); }
表示する①public GameObject メインイメージ;
③メインイメージ.SetActive(true);
非表示する①public GameObject メインイメージ;
③メインイメージ.SetActive(false);
ボタンを不使用モードにする③Button bt = ネクストボタン.GetComponent<Button>();
bt.interactable = false;
画像変更①public GameObject メインイメージ;
③メインイメージ.GetComponent<Image>().sprite = ゲームオーバー;
ボタンのプログラム⓪using UnityEngine.SceneManagement;
①public string シーンネーム;
⑤public void ロード()
{ SceneManager.LoadScene(シーンネーム);}