ぬるーむ

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

Unity

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

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

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

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

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

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

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

迷路の作成 パックマンの作成 主に下記サイトを参考にしました。これらのサイトを読めば十分かもしれません(笑)。ただ、どのサイトも古く(まぁ、パックマン自体が古いが)、英語のサイトなので日本語で今風の作り方の解説もあってもよいかなとも思っています…

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>…

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

壁蹴り 壁が邪魔でぷよが回転できないとき、1列ずれてから回転するようにする。 壁蹴り private enum PuyoDirection { Top = 0, Right = 1, Bottom = 2, Left = 3 } public void TurnLeft(Vector3 rotatePosition) { transform.RotateAround(transform.Trans…

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

得点の計算 計算式 総ボーナス = (連鎖ボーナス + 連結ボーナス + 色数ボーナス) (ただし、全てのボーナスが0の場合は1になる。) 得点 = 消したぷよの数 ×10 × 総ボーナス 連鎖ボーナス 連鎖数によりつくボーナス。 連鎖ボーナス 連結ボーナス つながってい…

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

ゴーストの表示 手順は以下の通り ゴーストの位置を実体と同じにする。 2つのゴーストをY座標でソートする。 それぞれ、実体のある位置からハードドロップした位置を求める(ハードドロップの方法はテトリスと同じ) 位置が重なった場合、2で上にあった方を上…

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

ぷよ同士をくっつける くっついている方向を4ビットの整数で表す。 上: 1(0b0001) 右: 2(0b0010) 下: 4(0b0100) 左: 8(0b1000) 上 + 右: 1 + 2 = 3(0b0011) 上 + 下: 1 + 4 = 5(0b0101) 上 + 左: 1 + 8 = 9(0b1001) 右 + 下: 2 + 4 = 6(0b0110) 右 +…

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

ぷよの消去 毎フレーム、状態がVanishのとき以下の処理を行う。 隣接した同色ぷよを取得する(同色リスト)。 同色リストのぷよが4つ以上のものを消去可能リストに追加する。 消去可能リストの中のぷよを全て消去する。 隣接した同色ぷよの取得 迷路を深さ優先…

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

ぷよの自由落下 毎フレーム、状態がFreeFallのとき以下の処理を行う。 落下可能なぷよを取得し、落下可能リストに追加する。 落下可能リストにあるぷよを下にあるものから順番に自由落下させる。 ぷよが落下できなくなったら、そのぷよの落下可能フラグを消…

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

基本部分 2次元配列を用いて処理を行うなど基本的な考え方はテトリスとほほ同じ。 2つのぷよ(組ぷよ)に4つの状態(Normal, FreeFall, Vanish, Wait)をもたせ、これらを遷移させることで移動やぷよの自由落下、連鎖などを行う。 大まかな流れは以下の通り。 …

Unityでテトリスを作ってみた 5

完成 完成したものがこちら Unity WebGL Player | Tetris 遊び方 横移動:← → 落下速度を上げる:↓ ハードドロップ:↑ 左回転:Z 右回転:X 10ライン消すごとにレベルが1増える。 レベルが上がるごとに落下速度が増す。 レベル10でクリア。 ソースコードはこ…

Unityでテトリスを作ってみた 4

ゴーストとハードドロップ ゴーストの表示は落下地点を求めてそこにゴーストを表示すればよい。 ハードドロップは落下地点を求めてテトリミノをそこまで落下させればよい。 落下地点を求める部分は共通なので、ゴーストを表示するときに求めた落下地点をハー…