ぬるーむ

Unity初心者が誰もが知っているゲームの模倣をしています。個人的な備忘録ですが、入門書を読み終えたばかりの初心者の方は「こんなへなちょこでもいいのか!」「俺の方がうまく作れる」と作成意欲がわいたりするかもしれません。

Unity

Unityによるパックマンの作り方 ~完成~

GameManagerクラスの作成 ゲーム開始 パックマンが食べられる ゴーストが食べられる エサ、パワーエサを食べる 恐慌状態の解除 スコアの表示 完成 まとめ GameManagerクラスの作成 GameManagerクラスでゲーム全体の管理をします。 ゲーム開始 CoroutineStart…

Unityによるパックマンの作り方 ~BGM・SEを再生する~

BGM・SEを管理する専用のクラス、SoundManagerを作成します。どこのクラスから使用されてもいいようにシングルトンにします。 SoundManagerクラス public class SoundManager { private readonly AudioSource bgmAudioSource; private readonly AudioSource …

Unityによるパックマンの作り方 ~アイテムの作成~

オブジェクトの作成 クラスの作成 エサ パワーエサ フルーツ 迷路に設置 オブジェクトの作成 16px × 16pxの画像を用意し、Pixels Per Unitを8にします。画像からSpriteを作成し、CirlceCollider2Dをアタッチします。適当にColliderの大きさを設定します。ま…

Unityによるパックマンの作り方 ~ゴーストの仕様~

アカベイ ピンキー アオスケ グズタ すべてのゴーストは待機状態から始まり、巡回→追跡→巡回を繰り返します。オリジナルでは巡回・追跡のループを重ねるごとに各状態の実行時間が変化するようですが、面倒なので今回は常に巡回を7秒、追跡を20秒としました。…

Unityによるパックマンの作り方 ~ゴーストのアニメーション~

通常、恐慌、死亡時のアニメーションをサブステートマシンを使って作成します。すべてのアニメーションはAny Stateから遷移するようにします。 Animation ControllerのParametersに以下の変数を作成します。 float DirX float DirY bool isScare bool isCalm…

Unityによるパックマンの作り方 ~ゴーストのAI~

概要 Waypointsの取得 TileUtilityの作成 AAIの作成 各ゴーストのAIの作成 概要 Waypointに到達するごとに次のWaypointを取得するこで経路を決定します。以下のものが必要になります。 Waypoints:ゴーストが移動できる全座標のリスト。 Tile:Waypoint同士…

Unityによるパックマンの作り方 ~ゴーストの移動~

概要 Waypointsの設定・取得 待機・準備・巡回状態でのWaypoints 死亡状態でのWaypoints 追跡・恐慌・帰還状態でのWaypoints Moverの作成 概要 ゴーストが移動できる座標(Waypoint)のリスト(Waypoints)とWaypointに向かって移動させるMoverクラスが必要にな…

Unityによるパックマンの作り方 ~ゴーストの状態~

IStateを継承したクラスで、ゴーストの状態の遷移と、そのときの行動を処理します。Dictionary<State, IState>とenum Stateで各stateを登録・参照し、Mover、Animatorで移動、アニメーションを行います。 状態とそのときの行動 移動に関しては下記を参照してください。 null</state,>…

Unityによるパックマンの作り方 ~ゴーストの作成~

ゴーストオブジェクトの作成 状態の管理 抽象クラスAGhostの作成 各ゴーストのクラスを作成 アカベイ ピンキー アオスケ グズタ 完成 ゴーストオブジェクトの作成 16px × 16pxの画像を用意し、Pixels Per Unitを8にします。画像からSpriteを作成し、Rigidbod…

Unityによるパックマンの作り方 ~パックマンの作成~

Pacmanオブジェクトの作成 Pacmanクラスの作成 移動 当たり判定 フレームごとの移動 ワープ 食べる アニメーション 完成 仕様はいたってシンプルです。 キーを押したら障害物にぶつかるまで進み続ける。 移動中にキーを押すと、その方向に移動できるようにな…

Unityによるパックマンの作り方 ~半自動でBoxCollider2Dをセット~

ColliderMapの作成 ColliderMapから矩形を取得 BoxCollider2Dをアタッチ BoxCollider2Dに必要な中心座標、サイズをを取得したいが、直接迷路の画像から取得するのは難しい。なので、まずデータ取得用の画像(ColliderMap)を作成し、そこから必要なデータを取…

Unityによるパックマンの作り方 ~迷路の作成~

Mazeオブジェクトの作成 BoxCollider2Dをアタッチ ワープ地点の作成 Mazeオブジェクトの作成 迷路の画像を用意しスプライトを作成します。 迷路の画像 Pixel Per Unitを8、Pivotを左下にします(左下を原点にしておくと今後わかりやすいので)。 迷路の画像の…

Unityによるパックマンの作り方

迷路の作成 パックマンの作成 ゴーストの作成 アイテムの作成 BGM・SEを再生する 完成 主に下記サイトを参考にしました。これらのサイトを読めば十分かもしれません(笑)。ただ、どのサイトも古く(まぁ、パックマン自体が古いが)、英語のサイトなので日本語で…

unityroomに自作ゲーム 「Let's Eat」 を公開しました

パックマンもどきのゲーム「Let's Eat」をunityroomに公開しました。近いうちに作成の解説も公開する予定です。 Let's Eat unityroom.com

Unityによる大富豪の作り方 6 ~完成~

完成 完成したものがこちら nullsuke.github.io ソースコードはこちら github.com まとめ とりあえず動くものを完成させようと思い、ジョーカーや8切りや9リバースなどの特殊ルール、カード交換などを実装できませんでした。人に遊んでもらうレベルにするに…

Unityによる大富豪の作り方 5 ~場に出す役の選択~

場に出す役の選択 選択候補の選出 親のとき 子のとき 場の役が階段の場合 場の役がグループの場合 実装 場に出す役の選択 選択候補の選出 場に出してもよさそうな役の候補を選出します。候補がない場合パスします。 場に出す役の決定 候補に挙がった役の中か…

Unityによる大富豪の作り方 4 ~役、手札の評価~

評価値の計算 役評価値 単体 グループ 階段 手札評価値 優先評価値 革命できない場合 革命できる場合 実装 評価値の計算 場にどのカードを出すか決定する為に必要な3つの評価値 - 役評価値、手札評価値、優先評価値 - の計算について説明します。 主に以下の…

Unityによる大富豪の作り方 3 ~役の取得~

役の取得 親のとき 概要 実装 子のとき 概要 実装 役の取得 自分が親か子なのかで取得方法は異なります。 親のとき 概要 手札が4枚より多いときは一番強いカード(2、革命時は3)を除いた手札から、そうでないときは手札のすべてから階段を取得します。 ただし…

Unityによる大富豪の作り方 2 ~ビット演算(応用)~

ビット演算(応用) 階段かグループか判定する 階段を取得 長さが最大になる組み合わせですべての階段を取得 指定した枚数の階段をすべて取得 グループを取得 指定した枚数以上のグループをすべて取得 すべてのグループを取得 その他 基準よりランクの高いカー…

Unityによる大富豪の作り方 1 ~ビット演算(基礎)~

はじめに ビット演算(基礎) 1の数を数える 最も下位にある1だけを残した値を取得 最も上位にある1だけを残した値を取得 最も下位(上位)にある1の桁を取得 n個のものの中からr個のものを選択してできるすべての組み合わせを取得 はじめに Unityで大富豪を作っ…

Unityでリバーシを作ってみた 8

完成 完成したものがこちら nullsuke.github.io ソースコードはこちら github.com まとめ AIの強さについては私自身が弱いので何とも言えない(Lv1にすら勝てない)。 速度については、下記の状態からの処理時間がそれぞれ Lv1(3手読み):24(ms) Lv2(5手読み)…

Unityでリバーシを作ってみた 7

AIの作成 2 合法手の数、確定石(4隅とそれに隣接する石)の数、C打ち・X打ちの数で評価する。 探索と同様、主に下記の本を参考にした。 リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS) | Seal Software |本…

Unityでリバーシを作ってみた 6

AIの作成 1 NegaScout法で探索。局面数に関わらず3手~7手先まで探索。 主に下記の本を参考にした。 リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS) | Seal Software |本 | 通販 | Amazon NegaScout法 αβ…

Unityでリバーシを作ってみた 5

Anchor、Pivotの設定 一般的にリバーシの盤は左上が原点のようである。クリックイベントで座標を管理しやすくする為、セルや石などもそれに合わせる。 一般的なリバーシ盤 セルなどのAnchor、Pivot設定 セルの画像のPivot設定 石などの画像のPivot設定 Cell…

Unityでリバーシを作ってみた 4

ViewBoardクラス Cell、Stone 、Markクラスを用いて石、合法手、相手の最後の手の描画を行う。 public class ViewBoard : MonoBehaviour { [SerializeField] Cell cellPrefabs = default; private readonly int size = 8; private readonly List<Cell> cells = new</cell>…

Unityでリバーシを作ってみた 3

LogicBoardクラス ビットボードを用いて盤の状態の更新、合法手の取得を行う。 主に下記サイトを参考にした。 オセロをビットボードで実装する - Qiita public class LogicBoard { private readonly Stack<ulong[]> log = new Stack<ulong[]>(); private ulong[] bitBoards = n</ulong[]></ulong[]>…

Unityでリバーシを作ってみた 2

Boardクラス 主に以下のことを行う。 LogicBoardを用いて盤の状態の更新、合法手の取得。 ViewBoardを用いて石、合法手の表示。 プレイヤー、ターンの管理。 public class Board : MonoBehaviour { private Player[] players; private LogicBoard logicBoard…

Unityでリバーシを作ってみた 1

基本構成 大まかなクラスの関係は以下の通り(クラス図なんて立派なものじゃないよ) 大まかなイメージ GameManagerクラス コルーチンを用いてゲーム流れを管理する。 public class GameManager : MonoBehaviour { [SerializeField] Board boardPrefab = defau…

Unityでぷよぷよを作ってみた 9

完成 完成したものがこちら Unity WebGL Player | PuyoPuyo 遊び方 横移動:← → 落下速度を上げる:↓ ハードドロップ:↑ 左回転:Z 右回転:X 30秒後毎に落下スピードが上がる。 50000点でクリア。 ソースコードはこちら PuyoPuyo/Script at main · nullsuke…

Unityでぷよぷよを作ってみた 8

猶予を持たせる ぷよがくっついてから消えるまでの間と消えた後落下するまでの間のそれぞれに猶予を持たせる。 public event EventHandler<EventArgs> Falled; private static List<Puyo> droppablePuyoes = new List<Puyo>(); private enum State { Normal, FreeFall, Vanish, Wait</puyo></puyo></eventargs>…