Godot

【Godot】吉里吉里のKAGっぽいスクリプトを自作するヒント

この記事はGodot Engine Advent Celendar 2022 9日目の記事となります。 今回はノベルゲームエンジンである「吉里吉里」のKAGスクリプトを自作するヒントについて書いていきます。 Godot Engineには「Dialogic」という強力なプラグインがあるので自作する必…

【2022年】ゲーム開発で使っている環境・ツールの紹介

2022.12.7現在、私が使っているゲーム開発環境を紹介します。 PC PCは M1 Mac mini (2020) と Macbook (2016) を使っています。ただ macOSは、ゲーム開発に関連するツールが「Windowsでしか使えない」「対応していない」「Windowsと比べて使い勝手が悪い」な…

【Godot】Godot Engine の Tips (逆引き)

この記事はGodot Engine Advent Celendar 2022 2日目の記事となります。 グラフィックス 矩形 (四角形) を描画したい 画像リソースを用意せずに、ひとまず四角形を表示したい場合、ColorRect ノードを追加すると四角形を表示できます。 ColorRectノードにつ…

【Godot】HTML5へのエクスポート手順

この記事では HTML5 (Web版) へのエクスポート手順について説明をします。 HTML5へのエクスポート手順 エクスポート設定の追加 メニューから「プロジェクト > エクスポート」を選びます。 エクスポート設定から「追加 > HTML5」を選びます。 エクスポートテ…

【Godot】KinematicBody2Dの is_on_floor() と One wayコリジョンの使い方

この記事では KinemetaicBody2Dの is_on_floor() の使い方と、One way 床 (一方通行床) の使い方を解説します。 KinematicBody2D.is_on_floor() の使い方 KinematicBody2Dについて KinematicBody2Dとは、物理エンジンで動作するノードでありながら、移動パラ…

【Godot】スロー再生する方法

今回はスロー再生(ゲームスピードをゆっくりにする)方法を紹介します。 _process() の delta の値を乗算する 特定のオブジェクトのみスローにする場合はこの方法を使います。更新関数である _process() の引数 "delta" に 1.0 以下の係数を乗算することで…

【Godot】2D Jointの使い方

今回は Godot Engine の物理システムの応用として、Joint2D の使い方を紹介します。 概要 Joint2D とは、StaticBody2D や RigidBody2D などの剛体を結合して特殊な動きを作るノードとなります。 DampedSpringJoint2D: 「バネ」の動きをシミュレート GrooveJo…

【Godot】RigidBody2Dの基本的な使い方

今回は Godot Engine の物理システムの中核となる「RigidBody2D」の基本的な使い方を紹介します。 ここで紹介した内容は、投擲ゲームやバランスゲームなど、 Physics puzzle game (物理パズルゲーム) を作るのに役立つと思います。 RigidBody2Dの基本的な使…

Dockerのインストール手順とNakama Serverのインストール方法

この記事では、Dockerをインストールして、オープンソースのゲームサーバー「Nakama Server」をインストールする方法について書いていきます。 環境 今回のインストールを試した環境とバージョンは以下のとおりです Windows 10 64ビット Pro Docker Desktop …

Godot Engineを使うメリット・デメリット

この記事では、Godot Engineでゲーム開発を行うメリット・デメリットについて、ネット上の意見や個人的な利点などを踏まえて解説したいと思います メリット・デメリットの要点 要点だけ先に書いておくと、メリットは以下のとおりです 1. 動作が軽いので性能…

脱出ゲームの謎解きUIの考え方・作り方

この記事では Escape the room game (脱出ゲーム) の謎解きUIの作り方について解説します。なおここで解説するのはコンピューターゲーム(デジタル)での脱出ゲームで、リアル脱出ゲーム(アナログ)のものとは、やや考え方が変わることにご注意ください 脱…

【Godot】謎解きゲームで使えそうなアナログ時計UI

今回は Escape the room game (脱出ゲーム) など、謎解きゲームで使えそうなアナログ時計UIの実装方法について解説します 完成プロジェクト 今回使用するプロジェクトを添付しておきます TestClock.zip なお、プロジェクト内に含まれる時計の画像(clock.png)…

【Godot】Unique nameによるノードへのアクセス(v3.5〜)

Godot v3.5 から Unique nameという地味に便利な機能が追加されたので、その機能を紹介します Unique nameによるノードアクセスについて 今までのノードアクセスの問題点 今まで、Godotでは以下のようなノード構造があった場合…… "Label3" にアクセスするた…

【Godot】Polygon2Dを分割するサンプル

Polygon2Dを分割するサンプルを作りました Polygon2Dを分割するサンプル 今回はソースコードとサンプルプロジェクトのみです。まだ不十分なところも多いので、今後修正される可能性があります 分割する対象を最初に存在するオブジェクト($obj)のみとしていま…

【Godot】spine-godotの使い方メモ

spine-godot(Godotエンジンへの Spine 対応版)がだいぶ良さげに動いていたので、かんたんに紹介する記事を書きました 実行ファイルのダウンロード spine-godotを利用するにはエンジンビルドが必要なのですが、実行ファイルをビルドしたものが提供されてい…

【Godot】口パク(リップシンク)の実装方法

この記事では音声に合わせて口パク(リップシンク)を実装する方法について解説します 口パクの実装方法 素材データの作成と登録 まずは口パクを行うキャラクターの画像と音声を用意します。 素材データとして以下のものを用意しました。 lipsync_data-1.zip…

Godot を学ぶためのチェックリスト

reddit を見ていたら「Godot Learning Checklist」という Godot を学ぶべきことをチェックリストにまとめていたのを見つけました。 reddit > Godot Learning Checklist. A simple tool made from my personal experience learning Godot. Use it to build yo…

【Godot】Collisionノードを使用せずにSprite同士の当たり判定を行う方法

通常、Sprite同士の当たり判定を行う場合、Collision ノードを使用します。これは異なる形状のオブジェクトや細かい調整が効きやすい反面、ノードを毎回組み合わせる必要があるので、ちょっとした当たり判定を行いたい場合にやや回りくどいです。(ただ通常…

【Godot】イージング関数のサンプルコード

Godotでは Tween というイージング関数を使ったアニメーションノードが実装されていますが、(個人的に) よりお手軽に使えるようにしたものを公開しておきます。 イージング関数のサンプルコード 以下のスクリプトを Ease.gd として保存し、プロジェクトに追…

【Godot】2つの角度差の最短を求める

2Dゲームを作るときにたまに必要になるのですが、計算方法をすぐに忘れてしまうので、個人的なメモとして記事にしました。 具体的には、キャラクターが「左」を向いているとします。そして「上」に敵がいるとします。 そうした場合に敵の方向に回転するとき…

【Godot】ConfigFileの使い方

今回はゲームの設定を保存するファイルとして使える ConfigFile の使い方を説明します。 ConfigFileの使い方 ConfigFileとは 繰り返しになりますが、ConfigFileとは Godot Engineで設定ファイルとして使うことを想定されているデータ形式です。このファイル…

【Godot】スプレッドシート風アドオン「GODOT SHEETS」の紹介

今回はスプレッドシート風アドオンの「GODOT SHEETS」を紹介します。 ただ注意点として、2022.4.2現在このアドオンは「開発中(アルファ版)」とのことなので、今のところはテスト用のプロジェクトでの使用にとどめておいた方が良いかもしれません This addo…

【Godot】穴掘り法によるダンジョンの自動生成

この記事は穴掘り法によるマップ(壁)の自動生成を Godot Engine で実装したサンプルを紹介するページです。 Roguelike (ローグライクゲーム) や、 Dungeon crawler (3DダンジョンRPG) のお手軽な自動生成ダンジョンとして使用できると思います。 穴掘り法…

【Godot】スクリプトでレイキャストする方法

今回はスクリプトでレイキャスト(ある地点から特定の方向にレイ(光線)を発生させて衝突判定を行う)する方法を紹介します。 なお、RayCast2D ノードを使用した衝突判定の方法は以下のページにまとめています。 スクリプトでレイキャストを行う方法 Godot …

【Godot】Geometryを使用した衝突判定

このページでは Geometry を使用した衝突判定について紹介します Geometry を使う理由 Godot Engineで衝突判定を行う場合、基本的には CollisionShapeノードを使用します。 ただ衝突の形状を動的に生成したい場合、CollisionShape では不便なことがあります…

【Godot】HyperLogアドオンの紹介

今回はデバッグ時に役立ちそうなアドオン「HyperLog」を紹介します。 HyperLogアドオンの使い方 HyperLogとは HyperLogとは、ゲームオブジェクトのパラメータを短いコードで表示できるようにするアドオンとなります。 ダウンロードは以下のページから行いま…

【Godot】デバッグ時に役立つ「通知ボード」の実装方法

今回はデバッグ時に役立つ「通知ボード」の実装方法について紹介します。 通知ボードを実装する 今回紹介する「通知ボード」とは、画面の一部分にデバッグメッセージを表示するものです。print() でもデバッグ用のメッセージを出力できますが、ちょっとした…

【Godot】電卓風の数値入力UIの実装方法

この記事では電卓風の数値入力UIの実装方法を紹介します。 電卓風の数値入力UIの実装方法 素材データのダウンロード 今回は日本語テキストを使用したいので、以下のサイトなどから日本語フォントをプロジェクトに追加しておきます。 https://fonts.google.co…

【Godot】Curve2Dを使ったベジェ曲線の作り方

この記事では Curve2D を使用したベジェ曲線の作り方を解説します。 ベジェ曲線とは そもそもベジェ曲線とはどういうものなのかを説明します。 ベジェ曲線とは、「始点」から「終点」に向けて制御点に引っ張られるようにして作られる曲線となります。 他によ…

ShoeBoxを使用したビットマップフォントの作成方法とGodot Engineでの設定方法

今回は画像データからフォントとして利用する「ビットマップフォント」の作成方法について解説します。 なおビットマップフォントの使い道としては「スコアの数字だけ別フォントにしたい」といった場合に使える便利なフォントです。 ビットマップフォントの…