tag:crieit.net,2005:https://crieit.net/tags/Godot/feed
「Godot」の記事 - Crieit
Crieitでタグ「Godot」に投稿された最近の記事
2023-11-26T17:22:25+09:00
https://crieit.net/tags/Godot/feed
tag:crieit.net,2005:PublicArticle/18662
2023-11-26T14:16:59+09:00
2023-11-26T17:22:25+09:00
https://crieit.net/posts/Godot-GD-md
Godot の GDスクリプトを、自前のスクリプトで置き換えようぜ(^~^)?.md
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/2f52ebc9cafd8fb10a87757ff8b663ff6562d2dce2cb3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2f52ebc9cafd8fb10a87757ff8b663ff6562d2dce2cb3.png?mw=700" alt="202311__shogi__26-1403--KeyConfigModerator-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 キーコンフィグの こういうスクリプトを 全部 自前のシナリオのト書きで書けないかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 GD Script の表現力を 自前のスクリプトが上回ってないなら 苦労が増えるだけじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 その前に、お父んの 自前スクリプト の仕様を説明してくれだぜ」</p>
<h1 id="キー・コンフィグが確定してないと動かない"><a href="#%E3%82%AD%E3%83%BC%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%B0%E3%81%8C%E7%A2%BA%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%AA%E3%81%84%E3%81%A8%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84">キー・コンフィグが確定してないと動かない</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 と、思ったんだが、キー・コンフィグが確定していないときに 自前スクリプトを動かすことは 無理だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 なんだ」</p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18659
2023-11-21T19:22:05+09:00
2023-11-21T23:05:06+09:00
https://crieit.net/posts/Godot-655c84cd156d9
Godot でノードパスを気にせずにシーン・ビューでノードを移動したいぜ(^~^)
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="情報"><a href="#%E6%83%85%E5%A0%B1">情報</a></h1>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/godot-practice">Git Hub / きふわらべRPG、他</a><br />
📺 <a target="_blank" rel="nofollow noopener" href="https://t.co/ZvT1ICT9x8">Discord サーバー 招待 / きふわらべRPG</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/a9d8e33df75340cb3aae1214ee2b6af4655c82453f6c7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a9d8e33df75340cb3aae1214ee2b6af4655c82453f6c7.png?mw=700" alt="202311__shogi__21-1906--folder-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 フォルダーを自由に作って そこにノードを移動できるようにしたいぜ。<br />
そのとき パスも リンク切れしないようにしたいぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 Godot エディター上で 移動すれば リンクは切れないんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ノードパスの仕様が難しい。もっと適当に ノードを移動したい」</p>
<p><a href="https://crieit.now.sh/upload_images/105ecd83f2c980c07567a437ac60f97e655c845cc5d17.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/105ecd83f2c980c07567a437ac60f97e655c845cc5d17.png?mw=700" alt="202311__shogi__21-1919--node-path-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 このような ハードコーティングしたノードパスを 自動で修正してくれる仕掛けが<br />
Godot には あるらしいぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 やってみろだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/9667e2c6013a78af394fb214949ae487655c85bba0d19.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9667e2c6013a78af394fb214949ae487655c85bba0d19.png?mw=700" alt="202311__shogi__21-1925--node-moved.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな風に ノードを移動しても、さっきのノードパスは 自動で変更されるといったことはないぜ」</p>
<h2 id="変更案"><a href="#%E5%A4%89%E6%9B%B4%E6%A1%88">変更案</a></h2>
<pre><code class="gd">#func hub():
# return $"../../🛩️ScenarioWritersHub"
# シナリオライターズ・ハブ取得
func hub():
var cur_node = $".."
while cur_node != null:
if cur_node.has_node("🛩️ScenarioWritersHub"):
return cur_node.get_node("🛩️ScenarioWritersHub")
cur_node = cur_node.get_parent()
return null
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 例えば 上記のように書きかえれば 親をさかのぼって探してくれるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 キャッシュした方が よくないか?」</p>
<pre><code class="gd">var cached_hubs = {}
# シナリオライターズ・ハブ取得
func hub():
var target = "🛩️ScenarioWritersHub"
if target in self.cached_hubs:
return self.cached_hubs[target]
var cur = $".."
while cur != null:
if cur.has_node(target):
var hub = cur.get_node(target)
self.cached_hubs[target] = hub
return hub
cur = cur.get_parent()
return null
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 じゃあ こうだぜ」</p>
<h1 id="モジュール化"><a href="#%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E5%8C%96">モジュール化</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 そのコードを使い回せるようにしたら いいんじゃない?」</p>
<p>📄 <code>monkey.gd</code>:</p>
<pre><code class="gd">extends Object
class_name Monkey
# ーーーーーーーー
# メモリ関連
# ーーーーーーーー
var cached_ancestor_children = {}
# ーーーーーーーー
# 親パス関連
# ーーーーーーーー
# 親の直下の子を調べる。なければ、祖先の直下の子を調べる
func find_ancestor_child(
current_node, # Node
target_node_name): # StringName
var cur = current_node
var target = str(target_node_name)
if target in self.cached_ancestor_children:
return self.cached_ancestor_children[target]
while cur != null:
if cur.has_node(target):
var hub = cur.get_node(target)
self.cached_ancestor_children[target] = hub
return hub
cur = cur.get_parent()
return null
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 じゃあ <code>monkey.gd</code> を作るぜ」</p>
<pre><code class="gd"># ーーーーーーーー
# メモリ関連
# ーーーーーーーー
var monkey = Monkey.new()
# ーーーーーーーー
# 親パス関連
# ーーーーーーーー
# シナリオライターズ・ハブ取得
func hub():
return monkey.find_ancestor_child(
self,
"🛩️ScenarioWritersHub")
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 あとは それを使うだけだぜ」</p>
<h2 id="トレードオフ"><a href="#%E3%83%88%E3%83%AC%E3%83%BC%E3%83%89%E3%82%AA%E3%83%95">トレードオフ</a></h2>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ノードの置き場所が自由になった分、<br />
ノードパスによるノードの識別が できなくなるわね」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 運用でカバーしろだぜ」</p>
<h2 id="フォルダーの深い所に置いたから、探索しろだぜ"><a href="#%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AE%E6%B7%B1%E3%81%84%E6%89%80%E3%81%AB%E7%BD%AE%E3%81%84%E3%81%9F%E3%81%8B%E3%82%89%E3%80%81%E6%8E%A2%E7%B4%A2%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">フォルダーの深い所に置いたから、探索しろだぜ</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 しまった!」</p>
<p>📄 <code>scenario_writers_hub.gd</code> :</p>
<pre><code class="gd"># 指定の部門下の scenario_document 辞書を全てマージして返します。
# この処理は、最初の1回は動作が遅く、その1回目でメモリを多く使います
func get_merged_scenario_document(department_name):
if not (department_name in self.cached_scenario_document):
var book_node = self.get_scenario_writer().get_node(str(department_name))
self.cached_scenario_document[department_name] = {}
# 再帰。結果は外部変数に格納
self.search_merged_scenario_document(department_name, book_node)
return self.cached_scenario_document[department_name]
func search_merged_scenario_document(department_name, current_node):
for child_node in current_node.get_children():
if "scenario_document" in child_node:
self.cached_scenario_document[department_name].merge(child_node.scenario_document)
# 再帰。結果は外部変数に格納
self.search_merged_scenario_document(department_name, child_node)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 フォルダーの下まで 再帰的に探索するコードを書いてないぜ」</p>
<p>📄 <code>programs_hub.gd</code> :</p>
<pre><code class="gd"># 全ての部門名一覧
func get_all_department_names():
if self.cached_all_department_names == null:
self.cached_all_department_names = [] # StringName の配列
# 結果は変数に格納される
self.search_all_department_names(
self.get_scenario_writer())
return self.cached_all_department_names
# 結果は変数に格納される
func search_all_department_names(current_node):
for child_node in current_node.get_children():
# 部門のノード名は `📗` で始まるものとする
if child_node.name.begins_with("📗"):
self.cached_all_department_names.append(child_node.name)
# `📂` で始まるノード名は、さらにその中も再帰的に探索されるものとする
elif child_node.name.begins_with("📂"):
self.search_all_department_names(child_node)
</code></pre>
<p>📄 <code>scenario_writers_hub</code> :</p>
<pre><code class="gd"># 指定の部門下の scenario_document 辞書を全てマージして返します。
# この処理は、最初の1回は動作が遅く、その1回目でメモリを多く使います
func get_merged_scenario_document(department_name):
# キャッシュになければ探索
if not (department_name in self.cached_scenario_document):
# [📗~]ノードの位置が変わっていることがあるので探索する
var book_node = self.search_scenario_book_node(
self.get_scenario_writer(),
str(department_name))
self.cached_scenario_document[department_name] = {}
# 再帰。結果は外部変数に格納
self.search_merged_scenario_document(department_name, book_node)
return self.cached_scenario_document[department_name]
# [📗~]ノードを探索
func search_scenario_book_node(
current_node,
department_name_str):
if current_node.has_node(department_name_str):
return current_node.get_node(department_name_str)
for child_node in current_node.get_children():
var book_node = self.search_scenario_book_node(
child_node,
department_name_str)
if book_node != null:
return book_node
func search_merged_scenario_document(department_name, current_node):
for child_node in current_node.get_children():
if "scenario_document" in child_node:
self.cached_scenario_document[department_name].merge(child_node.scenario_document)
# 再帰。結果は外部変数に格納
self.search_merged_scenario_document(department_name, child_node)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 まず 部門名を再帰的に探すことにするぜ。<br />
<code>📗</code> で始まるノード名なら 部門名、<br />
<code>📂</code> で始まる名前のノードなら、その中を探索されるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/2fbd3bae185f7f365aa2c7aa99dbb5be655ca6da8efff.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2fbd3bae185f7f365aa2c7aa99dbb5be655ca6da8efff.png?mw=700" alt="202311__shogi__21-2146--folder-2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 これで フォルダーの中に 台本を置いて 任意に整理できるようになったぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 任意に置くことができるフォルダーと、<br />
置く場所が決まってるフォルダーのアイコンを 変えた方がよくない?」</p>
<p><a href="https://crieit.now.sh/upload_images/db8bdc476c0df3ea89b44a88e09bc562655cb0319b04c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/db8bdc476c0df3ea89b44a88e09bc562655cb0319b04c.png?mw=700" alt="202311__shogi__21-2226--globe.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 固定のディレクトリーのアイコンをグローブ(Globe;地球)に変えたぜ。<br />
ハブ(Hub;中心地)が飛行機なんで、合うぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ストII のキャラクター選択画面のイメージだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/10798fd3a84fe096dcec4676844abf38655cb8deccad1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/10798fd3a84fe096dcec4676844abf38655cb8deccad1.png?mw=700" alt="202311__shogi__21-2303--addon.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>📂Imported</code> より、 <code>📂Addon</code> の方がイメージをつかめるか。変えたろ」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18657
2023-11-20T18:57:11+09:00
2023-11-20T20:41:53+09:00
https://crieit.net/posts/Godot-LabelSettings
Godot の LabelSettings 外部ファイルの名前の付け方を考えようぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 既にあるのに、同じものを作ってしまうのは 失敗の初期工程だぜ」</p>
<h2 id="実践1"><a href="#%E5%AE%9F%E8%B7%B51">実践1</a></h2>
<pre><code class="plaintext">battle_light_blue.tres
battle_light_green.tres
credits_roll.tres
game_title.tres
label_setting_large.tres
label_setting_medium.tres
large_font.tres
main_medium.tres
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ファイル名の付け方で 一番気にすることは、 同じものを何個も作ることがないようにすることだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 戦闘シーンとか タイトル画面とか 使う場所で分けるのはどうなの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 別れるばかりで整理ではない」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 お父んが 分けたのに……」</p>
<p><a href="https://crieit.now.sh/upload_images/2741cdcd70f4c6c908d44d87929a05f8655b2c59a89d3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2741cdcd70f4c6c908d44d87929a05f8655b2c59a89d3.png?mw=700" alt="202311__godot__20-1851--label-settings.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ひとまず ラベル設定で 1番優先される項目は 独断で フォント・サイズということにしよう。<br />
上図では 32 ピクセルのフォントだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 この ラベル設定の外部ファイルの名前を <code>medium.tres</code> と名付けるとしようぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/cc8e9af7e65aa0317707b0c9b31c7cc6655b2e8a087f5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cc8e9af7e65aa0317707b0c9b31c7cc6655b2e8a087f5.png?mw=700" alt="202311__godot__20-1900--large-label.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 一辺が 2倍になったフォントのラベル設定は <code>large.tres</code> と名付けようぜ?」</p>
<h2 id="実践2"><a href="#%E5%AE%9F%E8%B7%B52">実践2</a></h2>
<pre><code>title_copyright.tscn
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 使う場面、使う箇所によって フォントを 細かく設定していては<br />
ファイルが増える一方なんで……」</p>
<pre><code>medium_thin.tscn
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 文字サイズ中、線の太さは細い、みたいな 名前の方を 使うことにするぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/101bd96e6f8c52fd69d7d2789474b776655b45d83aa6b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/101bd96e6f8c52fd69d7d2789474b776655b45d83aa6b.png?mw=700" alt="202311__godot__20-2040--large-settings.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ひとまず これぐらいでいいだろう」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.<br />
.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18656
2023-11-19T10:47:53+09:00
2023-11-19T11:28:25+09:00
https://crieit.net/posts/Godot-tscn
Godot で、破損した .tscn ファイルを自力で復元しようぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 リソース・フォルダーの名称変更とか、<br />
ノード名の変更とか、<br />
子シーンの生成とか、<br />
やりまくってたら <code>.tscn</code> ファイルのIdの整合性が取れなくなったのか、 <code>.tscn</code> ファイルを読み込まなくなったぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 地獄ね」</p>
<p><a href="https://crieit.now.sh/upload_images/0e92962ce1d9035efefab6dd8dfc5b3c6559702ea1a94.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0e92962ce1d9035efefab6dd8dfc5b3c6559702ea1a94.png?mw=700" alt="202311__shogi__19-1116--font-crushed.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 設定をすべて復元しないと、フォント情報が消えていたりするぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ファイルの破損とか、Godot のユーザーサポートの、サポート外だろ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ゲームではなく、 Godot を作るレベルのスキルを プログラミング・スキルと呼ぶのよ。<br />
あんたのお父んは プログラミング・スキルを持ったプログラマーで、<br />
破損したファイルの復元とか、 何も仕様がないところからの解析とか するのが通常業務よ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 なりたくない職業だな」</p>
<h2 id="gd_scene"><a href="#gd_scene">gd_scene</a></h2>
<p>📄 <code>*.tscn</code>:</p>
<pre><code class="tscn">[gd_scene load_steps=78 format=3 uid="uid://ccxa7p87p2u60"]
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>.tscn</code> ファイルの先頭は <code>gd_scene</code> ブラケットで始まるが、このファイルの書式もよく分からない」</p>
<h2 id="ext_resource"><a href="#ext_resource">ext_resource</a></h2>
<pre><code class="tscn">[ext_resource type="Script" path="res://🍋scripts/🪑grayscale_🍉kifuwarabe_rpg/director.gd" id="1_wmnp6"]
[ext_resource type="Texture2D" uid="uid://bkfsr571tdwqf" path="res://🍋images/🪑grayscale/1280x720/grid.png" id="2_ivwoj"]
[ext_resource type="AudioStream" uid="uid://wtqqhswcs7ni" path="res://🍋audio_bgm/🪑sakuramaru/きふわらべファイター2.ogg" id="8_8nkdr"]
[ext_resource type="LabelSettings" uid="uid://dc5ae2mnxhltk" path="res://🍋label_settings/🪑grayscale/game_title.tres" id="43_phx2h"]
[ext_resource type="PackedScene" uid="uid://daqtppg5rtuat" path="res://downloads_from_🍉kifuwarabe_visual_novel/📂programmer_🎬Instructions_🍉kifuwarabe_visual_novel.tscn" id="58_sadl4"]
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 以下、 <code>id</code> 順で <code>ext_resource</code> ブラケットが並ぶぜ。<br />
Id順って 読むとき 何も嬉しくない……」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 お父んが 🍋 の文字を付けたやつ、だいたい <code>ext_resource</code> と一致するな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>.tscn</code> に並んでいる <code>ext_resourec</code> ブラケットと、<br />
ファイル・エクスプローラーに並んでいる 素材ファイルを 1つ1つ 在るかチェックすればいいのね。<br />
棚卸みたいよね」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 それぐらい プログラムでやればいいのでは……」</p>
<h2 id="sub_resource"><a href="#sub_resource">sub_resource</a></h2>
<pre><code class="tscn">[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_glhd8"]
[sub_resource type="LabelSettings" id="LabelSettings_f3kmi"]
line_spacing = 1.0
font = ExtResource("47_nlh77")
font_size = 32
outline_size = 10
outline_color = Color(0.12549, 0.12549, 0.12549, 1)
shadow_size = 5
shadow_color = Color(0.12549, 0.12549, 0.12549, 1)
shadow_offset = Vector2(3, 3)
[sub_resource type="LabelSettings" id="LabelSettings_ts82g"]
line_spacing = 1.0
font = ExtResource("47_nlh77")
font_size = 24
outline_size = 10
outline_color = Color(0.12549, 0.12549, 0.12549, 1)
shadow_size = 5
shadow_color = Color(0.12549, 0.12549, 0.12549, 1)
shadow_offset = Vector2(3, 3)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 以下、 <code>.tscn</code> ファイルに書けそうなテキストデータは <code>sub_resource</code> として並ぶぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ラベルのフォント設定とかねえ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>ExtResource("47_nlh77")</code> のように、Idが紐づけされている。<br />
これが 1つでも整合性が取れないと <code>*.tscn</code> ファイルは読めなくなる」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 つらい」</p>
<p><a href="https://crieit.now.sh/upload_images/24e63e9bbb39ffd652fb74d9503853ef65596cc3d0288.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/24e63e9bbb39ffd652fb74d9503853ef65596cc3d0288.png?mw=700" alt="202311__shogi__19-1101--label-settings.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 例えば この画面のように フォントに色付けたり、ドロップシャドウを濃くしたり、<br />
ちょっと傾けたり、1度しか使わないような設定が <code>sub_resource</code> だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>.tscn</code> ファイルが破損すると この角度をちょっとずらしたやつの設定とか<br />
手動で Idの紐づけを復元していくぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 地獄をバリエーション豊かにしないでほしいわね」</p>
<h2 id="node"><a href="#node">node</a></h2>
<pre><code class="tscn">[node name="Director" type="Node2D"]
material = SubResource("CanvasItemMaterial_glhd8")
script = ExtResource("1_wmnp6")
[node name="Grid" type="Sprite2D" parent="."]
visible = false
z_index = 5
position = Vector2(640, 360)
texture = ExtResource("2_ivwoj")
[node name="📂BackgroundArtist" type="Node2D" parent="."]
[node name="🗻4Fイベントルーム" type="Sprite2D" parent="📂BackgroundArtist"]
visible = false
position = Vector2(640, 360)
texture = ExtResource("25_aycb2")
[node name="🗻崎川駅前" type="Sprite2D" parent="📂BackgroundArtist"]
visible = false
position = Vector2(640, 360)
texture = ExtResource("26_4dvmr")
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 あとは ノードが並んでいるツリービューになっているぜ」</p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18642
2023-11-07T23:14:21+09:00
2023-11-08T00:45:58+09:00
https://crieit.net/posts/Godot-654a463d6e8e2
Godot で選択肢カーソルを作ろうぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 選択肢カーソルは」</p>
<pre><code>→ ・攻める
・守る
・投了
・勝ち宣言
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 上記の場合は <code>1,2,3,4</code> と表し、」</p>
<pre><code> さあ選べ
→ ・居飛車
・振り飛車
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 上記の場合は <code>2,3</code> と表す。<br />
つまり どの行の頭にカーソルが止まるか、序数で表す」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 このような数列を入れている配列を <code>choices_row_numbers</code> と呼ぶぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 汎用性があるかは知らんが、まあ いいんじゃないか」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 現在、カーソルが指している <code>choices_row_numbers</code> 配列の要素のインデックスを<br />
<code>choices_index</code> と呼ぶ。初期値は <code>0</code>」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 現在、カーソルが指している行番号を取得するには、<br />
<code>get_row_number_of_choices()</code> メソッドを使う」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 選択肢カーソルを下へ移動できるかは、 <code>can_cursor_down()</code> メソッドを使う。<br />
真偽値を返す」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 選択肢カーソルを上へ移動できるかは、 <code>can_cursor_up()</code> メソッドを使う。<br />
真偽値を返す」</p>
<h2 id="あっ!"><a href="#%E3%81%82%E3%81%A3%EF%BC%81">あっ!</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 レバーを押したか、離したかを見てないな。<br />
レバーを押したときと、離したときで 2回 入力が入っている」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 直せ!」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 レバーを押したときだけ反応するようにしたら、<br />
不具合が1つ直って、別の不具合が出てきたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 前進よ、前進」</p>
<h2 id="ウィンドウごとの、カーソルの初期位置をどう記憶する?"><a href="#%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%94%E3%81%A8%E3%81%AE%E3%80%81%E3%82%AB%E3%83%BC%E3%82%BD%E3%83%AB%E3%81%AE%E5%88%9D%E6%9C%9F%E4%BD%8D%E7%BD%AE%E3%82%92%E3%81%A9%E3%81%86%E8%A8%98%E6%86%B6%E3%81%99%E3%82%8B%EF%BC%9F">ウィンドウごとの、カーソルの初期位置をどう記憶する?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 カーソルの初期位置を どう記憶するか。<br />
初期位置というより、原点がいいのか」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>choices_cursor_origin_x</code> と、 <code>choices_cursor_origin_y</code> 変数を用意しろだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 先頭が1行目とは限らないんだよな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>get_cursor_x()</code> と、 <code>get_cursor_y()</code> メソッドを作りなさいよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>font_height</code> を 32、 <code>line_space_height</code> を 16 として、<br />
座標を計算してみるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ラベルは <code>get_transform().x</code> や、 <code>get_transform().y</code> より、<br />
<code>offset_left</code> 、 <code>offset_top</code> を使った方がいいのかだぜ?<br />
よく分からんなあ」</p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18634
2023-10-31T00:21:04+09:00
2023-11-07T04:16:42+09:00
https://crieit.net/posts/Godot-653fc9e0a9b18
Godot でキーコンフィグを作ろうぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="Git Hub"><a href="#Git+Hub">Git Hub</a></h1>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/godot-practice/tree/main/src-game-controller-key-config">src-game-controller-key-config</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 キー・コンフィグを作るか、アイデア無いけど」</p>
<p><a href="https://crieit.now.sh/upload_images/d517593dcee2b1f68e893d8a65af0b6b653fb1d72260e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d517593dcee2b1f68e893d8a65af0b6b653fb1d72260e.png?mw=700" alt="202310__godot__30-2237--KeyConfig.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 まず画面の雰囲気を 仮置きしようぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 レバーは -1 ~ 10、 ボタンは -1 ~ 128 まであるそうだぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html#enum-globalscope-joybutton">enum JoyButton:</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 ソースは一部抜粋すると こんな感じ」</p>
<pre><code class="gd"># ディレクター(Director)
extends Node2D
var re_button = RegEx.new()
var re_lever = RegEx.new()
# 起動直後に レバーが入った状態で始まることがあるから、1秒ぐらい無視するためのカウンター
var counter_of_wait = 0.0
# WaitForPrompt, Prompt, WaitForInput, Input, InputOk の5つ。 Wait を入れないと反応過敏になってしまう
var turn_state = &"WaitForPrompt"
var current_step = 1
# 操作したボタン (変数を増やしたくないのでレバーは+1000して入れる)
var button_number = -1
var button_presentation_name = &""
# Called when the node enters the scene tree for the first time.
func _ready():
# この文字列がどう変化するのか、さっぱり分からん
re_button.compile("Joypad Button (\\d)")
re_lever.compile("Joypad Motion on Axis (\\d)")
$"TelopCoordinator/TextBlock".text = """\
* * *
"""
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
if not (turn_state in [&"WaitForPrompt", &"Prompt", &"WaitForInput", &"InputOk"]):
return
var is_ok = false
if self.current_step == 1:
if turn_state == &"WaitForPrompt":
if self.counter_of_wait < 1.0:
self.counter_of_wait += delta
return
turn_state = &"Prompt"
elif turn_state == &"Prompt":
$"GuiArtist/KeyConfig_CanvasLayer/決定ボタン".text = "(1)決定ボタン、メッセージ送りボタン を押してください"
turn_state = &"WaitForInput"
elif turn_state == &"WaitForInput":
if self.counter_of_wait < 1.0:
self.counter_of_wait += delta
return
turn_state = &"Input"
is_ok = true
elif self.current_step == 2:
if turn_state == &"InputOk":
$"GuiArtist/KeyConfig_CanvasLayer/決定ボタン".text = "(1)決定ボタン、メッセージ送りボタン: " + self.button_presentation_name
turn_state = &"WaitForPrompt"
elif turn_state == &"WaitForPrompt":
if self.counter_of_wait < 1.0:
self.counter_of_wait += delta
return
turn_state = &"Prompt"
elif turn_state == &"Prompt":
$"GuiArtist/KeyConfig_CanvasLayer/キャンセルボタン".text = "(2)キャンセルボタン、メニューボタン を押してください"
turn_state = &"WaitForInput"
elif turn_state == &"WaitForInput":
if self.counter_of_wait < 1.0:
self.counter_of_wait += delta
return
turn_state = &"Input"
is_ok = true
elif self.current_step == 3:
if turn_state == &"InputOk":
$"GuiArtist/KeyConfig_CanvasLayer/キャンセルボタン".text = "(2)キャンセルボタン、メニューボタン: " + self.button_presentation_name
turn_state = &"WaitForPrompt"
elif turn_state == &"WaitForPrompt":
if self.counter_of_wait < 1.0:
self.counter_of_wait += delta
return
turn_state = &"Prompt"
elif turn_state == &"Prompt":
$"GuiArtist/KeyConfig_CanvasLayer/メッセージ早送りボタン".text = "(3)メッセージ早送りボタン を押してください"
turn_state = &"WaitForInput"
elif turn_state == &"WaitForInput":
if self.counter_of_wait < 1.0:
self.counter_of_wait += delta
return
turn_state = &"Input"
is_ok = true
elif self.current_step == 4:
if turn_state == &"InputOk":
$"GuiArtist/KeyConfig_CanvasLayer/メッセージ早送りボタン".text = "(3)メッセージ早送りボタン: " + self.button_presentation_name
turn_state = &"WaitForPrompt"
elif turn_state == &"WaitForPrompt":
if self.counter_of_wait < 1.0:
self.counter_of_wait += delta
return
turn_state = &"Prompt"
elif turn_state == &"Prompt":
$"TelopCoordinator/TextBlock".text = "完了"
turn_state = &"WaitForInput"
elif turn_state == &"WaitForInput":
if self.counter_of_wait < 1.0:
self.counter_of_wait += delta
return
turn_state = &"Input"
is_ok = true
else:
pass
if is_ok:
self.counter_of_wait = 0.0
self.button_number = -1
self.button_presentation_name = &""
func _unhandled_input(event):
# 起動直後に、押してもないレバーが 押したことになっていることがある
var event_as_text = event.as_text()
print("入力: " + event_as_text)
if turn_state != &"Input":
return
var is_ok = false
var acception = "受付: "
# 📖 [enum JoyButton:](https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html#enum-globalscope-joybutton)
# レバーは -1 ~ 10、 ボタンは -1 ~ 128 まであるそうだ
if not is_ok:
var matched = re_button.search(event_as_text)
if matched:
self.button_number = int(matched.get_string(1))
button_presentation_name = "ボタン" + str(self.button_number)
is_ok = true
if not is_ok:
var matched = re_lever.search(event_as_text)
if matched:
var number = int(matched.get_string(1))
button_presentation_name = "レバー" + str(number)
self.button_number = number + 1000
is_ok = true
if is_ok:
print(acception)
self.current_step += 1
turn_state = &"InputOk"
print("入力完了")
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 仮組は こんなもん」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1719008935167017345?s=20">動画</a></p>
<h1 id="📅 2023-11-01 tue ⏰ 25:46"><a href="#%F0%9F%93%85+2023-11-01+tue+%E2%8F%B0+25%3A46">📅 2023-11-01 tue ⏰ 25:46</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 仮組は こんなもん」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1719394092797579309?s=20">動画</a></p>
<h1 id="📅 2023-11-03 fri ⏰ 09:57"><a href="#%F0%9F%93%85+2023-11-03+fri+%E2%8F%B0+09%3A57">📅 2023-11-03 fri ⏰ 09:57</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ちょっとでも パソコンの前に座るか……」</p>
<p><a href="https://crieit.now.sh/upload_images/91f8b476ddbd82d67b6491f27beb986c65448adee2dc3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/91f8b476ddbd82d67b6491f27beb986c65448adee2dc3.png?mw=700" alt="202311__godot__03-1452--2Projects.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 あっ! キーコンフィグの内容を きふわらべRPGへ コピーできね!」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Godot のツリーは 仮想的なもので、実体は無いしな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 わたしたちは Godot の <strong>Scene</strong> の仕組みを もっと勉強した方がいいんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 Godot 独自の機能を勉強したって 何になるか知らんけど……」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/3.1/getting_started/step_by_step/scenes_and_nodes.html">Scenes and Nodes</a></p>
<h2 id=".tscn は、つまりサブツリーか?"><a href="#.tscn+%E3%81%AF%E3%80%81%E3%81%A4%E3%81%BE%E3%82%8A%E3%82%B5%E3%83%96%E3%83%84%E3%83%AA%E3%83%BC%E3%81%8B%EF%BC%9F">.tscn は、つまりサブツリーか?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ツリーは <code>*.tscn</code> ファイル1つに保存できるんじゃないか?<br />
それで憶測だが <code>*.tscn</code> は サブ・ツリーとしてインポートできるんじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 サブツリーとして インポートするってのは ディレクトリーのマウントかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>key_config.tscn</code> が既に サブツリー のファイルになってんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 じゃあ <code>key_config.tscn</code> は きふわらべRPGから インポートできるのかだぜ?<br />
やってみるか……」</p>
<pre><code> Cannot open file 'res://main_font.tres'.
Failed loading resource: res://main_font.tres. Make sure resources have been imported by opening the project in the editor at least once.
Attempt to open script 'res://scripts/key_config_artist.gd' resulted in error 'File not found'.
Failed loading resource: res://scripts/key_config_artist.gd. Make sure resources have been imported by opening the project in the editor at least once.
scene/resources/resource_format_text.cpp:283 - res://sub_trees/key_config.tscn:86 - Parse Error:
Failed loading resource: res://sub_trees/key_config.tscn. Make sure resources have been imported by opening the project in the editor at least once.
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 エラーが出た」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 リソース・ファイルのインポートも全部やってくれるのかと思ったら、<br />
ファイルが足らんとエラーだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>*.tscn</code> ファイルは インデックスの機能しかないのでは?<br />
これがドキュメントの言う、 素材と レシピに分かれていて、 レシピ しかないという意味では?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そんなもん 全部丸ごと やってほしいのに……、<br />
フォルダーを整理するか……」</p>
<h2 id="スタジオというメタファーで分けた"><a href="#%E3%82%B9%E3%82%BF%E3%82%B8%E3%82%AA%E3%81%A8%E3%81%84%E3%81%86%E3%83%A1%E3%82%BF%E3%83%95%E3%82%A1%E3%83%BC%E3%81%A7%E5%88%86%E3%81%91%E3%81%9F">スタジオというメタファーで分けた</a></h2>
<p><a href="https://crieit.now.sh/upload_images/59a9c7104b23996d6dc3fc17f2aa58f56544a2b7b4b6f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/59a9c7104b23996d6dc3fc17f2aa58f56544a2b7b4b6f.png?mw=700" alt="202311__godot__03-1633--StudioFolder-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 スタジオというメタファーで分けたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 団体と、製品名で分けた方がよくない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 じゃあ <code>studio_grayscale_keyconfig.tscn</code> とか、 <code>studio_grayscale_kifuwaraberpg</code> とかかな。<br />
そこまで 厳密にやるべきかどうか、少し考えてみるか……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 アンダースコア2つを区切りに利用して<br />
<code>studio__grayscale__key_config.tscn</code> と、 <code>studio__grayscale__kifuwarabe_rpg.tscn</code> とか どうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 見にくさは改善しないんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>studio_grayscale_presents_key_config.tscn</code> と、 <code>studio_grayscale_presents_kifuwarabe_rpg.tscn</code><br />
にしたら どうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ファイルパスが長くなるの ゴミ箱に入らなかったりして データが破損するんだよな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>🐔grayscale_🐤key_config.tscn</code> と、 <code>🐔grayscale_🐤kifuwarabe_rpg.tscn</code> でどう?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 サークルと作品の関係性は、 にわとりとひよこの関係性とは 異なると思うぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>🏠grayscale_🎬key_config.tscn</code> と、 <code>🏠grayscale_🎬kifuwarabe_rpg.tscn</code> でどう?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 サークルと作品の関係性は、ハウスとカチンコの関係性とは 異なると思うぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 シーンの意味はあってるのに。じゃあ ディレクター・チェアの絵文字は無いのかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 絵文字の品揃えが偏ってて あんまりないのよ。<br />
<code>🪑grayscale_🎬key_config.tscn</code> と、 <code>🪑grayscale_🎬kifuwarabe_rpg.tscn</code> でどう?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ひとまず それで試してみるかだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/e2407d5261d319769482d2d58599d2216544ad6aa7d0d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e2407d5261d319769482d2d58599d2216544ad6aa7d0d.png?mw=700" alt="202311__godot__03-1720--RenameLikeKids.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 キッズ感出てくるが 椅子がポリティカル・コネクトネスに引っかかるとは思えないし、<br />
これで進めよう」</p>
<h2 id="鎖みたいなボタンでインポート"><a href="#%E9%8E%96%E3%81%BF%E3%81%9F%E3%81%84%E3%81%AA%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A7%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88">鎖みたいなボタンでインポート</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 インポートでは無くて リンクという概念らしいが」</p>
<p><a href="https://crieit.now.sh/upload_images/4725ad512e93f150d04bf7465bdbdf536544b1ed5db52.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4725ad512e93f150d04bf7465bdbdf536544b1ed5db52.png?mw=700" alt="202311__godot__03-1737--Linked-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ルート・ノードだけ 見えるのかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 そういう趣旨だろ。<br />
サブツリーが見えると 散らばって 管理できなくなるしな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 じゃあ もっとよく考えて ルート・ノード 作り直そ」</p>
<h2 id="パスが合わなくなる"><a href="#%E3%83%91%E3%82%B9%E3%81%8C%E5%90%88%E3%82%8F%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8B">パスが合わなくなる</a></h2>
<pre><code class="gd"># ディレクター取得
func get_director():
return $"../../Director"
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 リンクしたシーンのパス、合わなくなるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 お父ん、リネームもするしな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ぶら下げたサブツリーから、外側のサブツリーへパスを合わせる方法も分からん」</p>
<p><a href="https://crieit.now.sh/upload_images/92e8da4acfac9ac3aba19d479851f5866544f63097b9d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/92e8da4acfac9ac3aba19d479851f5866544f63097b9d.png?mw=700" alt="202311__godot__03-2230--Subtree-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Director</code> が名前被りするんで、嫌なんで <code>DirectorForKeyConfig</code> にリネームしたら……」</p>
<p><a href="https://crieit.now.sh/upload_images/7c0f018880a8118949f1b21e4f8d86236544f6cc9d051.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7c0f018880a8118949f1b21e4f8d86236544f6cc9d051.png?mw=700" alt="202311__godot__03-2233--ChangePath-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ハードコーディングしてるパスも 書き直せよ、ということらしい」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 つら」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 情報技術を扱う わたしたちが なんでそんな手間 受け入れなくちゃいけないのかしらね?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 フレームワークを使うからだぜ」</p>
<h2 id="とりあえず シーンをぶらさげる(リンクする)ことができた"><a href="#%E3%81%A8%E3%82%8A%E3%81%82%E3%81%88%E3%81%9A%E3%80%80%E3%82%B7%E3%83%BC%E3%83%B3%E3%82%92%E3%81%B6%E3%82%89%E3%81%95%E3%81%92%E3%82%8B%EF%BC%88%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%99%E3%82%8B%EF%BC%89%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%9F">とりあえず シーンをぶらさげる(リンクする)ことができた</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 とりあえず 最低限のキーコンフィグを付けたぜ」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1720432581928505410?s=20">動画</a></p>
<h1 id="📅 2023-11-07 tue レバー対応"><a href="#%F0%9F%93%85+2023-11-07+tue+%E3%83%AC%E3%83%90%E3%83%BC%E5%AF%BE%E5%BF%9C">📅 2023-11-07 tue レバー対応</a></h1>
<p><a href="https://crieit.now.sh/upload_images/f78170be16e3fa43d1f0c2f4ea32f64665493b7bd77d0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f78170be16e3fa43d1f0c2f4ea32f64665493b7bd77d0.png?mw=700" alt="202311__godot__07-0415--Lever.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ↑ レバー対応もした」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18629
2023-10-27T22:39:26+09:00
2023-11-07T00:42:19+09:00
https://crieit.net/posts/Godot-653bbd8e3e230
Godot でゲームのコントローラーを使おうぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="Git Hub"><a href="#Git+Hub">Git Hub</a></h1>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/godot-practice/tree/main/src-game-controller">src-game-controller</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d713d338edceee98e75f4eccda2800e9653bb92629320.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d713d338edceee98e75f4eccda2800e9653bb92629320.jpg?mw=700" alt="202310__photo__27-2220--Gamepad.jpg" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ゲームパッドが届いたので Godot はゲームパッドを使えるか 調べようぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 こういうコントローラーは どうやって使うの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ハードウェアと ハードウェアは結局 ピンが束になったバスで つながってるだけで<br />
そこを電気信号が通るだけだぜ。<br />
現代だと USB規格 を使うだろうから、<br />
USB端子を USBポートに差し込めば<br />
OS に何か刺さった、という 自動認識まではしてくれるんじゃないかな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 やってくれだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/c06c18cdbaa0040dc757352a36e64819653bbc515950e.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c06c18cdbaa0040dc757352a36e64819653bbc515950e.jpg?mw=700" alt="202310__photo__27-2232--Gamepad-o2o0.jpg" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 じゃあ USB ケーブルを指すぜ。無線のもあるな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 USB メモリータイプの端子挿したら PCから音が出て 反応して セットアップが自動的に始まって<br />
セットアップが終わったぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 電池は?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ケーブル挿して1、2時間でチャージが終わるそうだぜ。電池は取り出せなさそう」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ ケーブル挿せだぜ」</p>
<h2 id="Godot の説明書読もうぜ?"><a href="#Godot+%E3%81%AE%E8%AA%AC%E6%98%8E%E6%9B%B8%E8%AA%AD%E3%82%82%E3%81%86%E3%81%9C%EF%BC%9F">Godot の説明書読もうぜ?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 説明書読むか~」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/tutorials/inputs/controllers_gamepads_joysticks.html">Controllers, gamepads, and joysticks</a></p>
<pre><code>E 0:00:00:0571 director.gd:24 @ _process(): The InputMap action "move_back" doesn't exist. Did you mean "ui_text_backspace"?
<C++ エラー> Condition "!InputMap::get_singleton()->has_action(p_action)" is true. Returning: 0.0
<C++ ソース> core/input/input.cpp:346 @ get_action_raw_strength()
<スタックトレース> director.gd:24 @ _process()
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 いや もう エラー出たが」</p>
<p><a href="https://crieit.now.sh/upload_images/ff4a2920b1acef9476e36663df09bc5b653bc6549e0ed.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ff4a2920b1acef9476e36663df09bc5b653bc6549e0ed.png?mw=700" alt="202310__godot__27-2316--InputMap.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 インプットマップが空なのと 何か関係あるかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/2644461e23db9ed66971483e7c6e1225653bc6ee33603.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2644461e23db9ed66971483e7c6e1225653bc6ee33603.png?mw=700" alt="202310__godot__27-2316--InputMap-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 あっ、何か出た!」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>ui_left</code> というのが使えるんじゃないの?」</p>
<pre><code class="gd">func _process(_delta):
var velocity = Input.get_vector(
&"ui_left", # 左の方
&"ui_right", # 右の方
&"ui_up", # 上の方
&"ui_down") # 下の方
$"GuiArtist/CanvasLayer/→値".text = str(velocity.x)
$"GuiArtist/CanvasLayer/↓値".text = str(velocity.y)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 よし、取れたぜ。 <code>-1</code>、<code>0</code>、<code>1</code> のいずれかになる感じだぜ」</p>
<h2 id="Godot の説明書じゃ分かんね"><a href="#Godot+%E3%81%AE%E8%AA%AC%E6%98%8E%E6%9B%B8%E3%81%98%E3%82%83%E5%88%86%E3%81%8B%E3%82%93%E3%81%AD">Godot の説明書じゃ分かんね</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 たいてい、公式の記事を読め、と言うところなんだが、 <code>Godot</code> は金も人手も足りてないのか ホームページもドキュメントも ぐちゃぐちゃなんで……」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/tutorials/inputs/input_examples.html">Input examples</a></p>
<pre><code class="gd">func _input(event):
print(event.as_text())
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 自力で解析するか」</p>
<p>Output:</p>
<pre><code>Joypad Button 0 (Bottom Action, Sony Cross, Xbox A, Nintendo B)
Joypad Button 1 (Right Action, Sony Circle, Xbox B, Nintendo A)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 この入力はどうやって 利用できるのか」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 その文字列を利用すればいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 この文字列が仕様なのか Godot をアップデートしたら あっさり変わるのか分からん」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://godotforums.org/d/25136-getting-the-name-of-input-action-associated-to-input/10">Input</a></p>
<pre><code>func _input(event):
for action in InputMap.get_actions():
if InputMap.event_is_action(event, action):
print("action: " + action)
</code></pre>
<p>Output:</p>
<pre><code>Joypad Button 0 (Bottom Action, Sony Cross, Xbox A, Nintendo B)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 確かにこの文字列が出力されるが……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 じゃあ この長ったらしい文字列が ボタンのIdになってるわけかだぜ、変なの」</p>
<pre><code>Joypad Button 0 (Bottom Action, Sony Cross, Xbox A, Nintendo B)
Joypad Button 0 (Bottom Action, Sony Cross, Xbox A, Nintendo B)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 1ボタンと 連射1ボタンが 同じ文字列 返ってくるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 連射ボタンだからじゃないか? 押しっぱなしにしてみろだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 確かに 1ボタンは 押しっぱなしにしても反応しないが、<br />
連射1ボタンは 押しっぱなしにしてると 何度も反応するぜ、いわゆるキー・リピート」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 連射ボタンだからな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 嬉しくね~」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 せっかく 4つ ボタンが付いてるのに そのうちの半分は キーリピートするだけ……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 時代よ 時代! シューティング全盛期!」</p>
<h2 id="セレクトボタンと ランボタン"><a href="#%E3%82%BB%E3%83%AC%E3%82%AF%E3%83%88%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A8%E3%80%80%E3%83%A9%E3%83%B3%E3%83%9C%E3%82%BF%E3%83%B3">セレクトボタンと ランボタン</a></h2>
<pre><code>Joypad Button 4 (Back, Sony Select, Xbox Back, Nintendo -)
Joypad Button 6 (Start, Xbox Menu, Nintendo +)
Unknown
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 セレクト・ボタンが ボタン4、<br />
ラン・ボタンが ボタン6 だぜ。<br />
模倣品のゲームパッドの真ん中上の方にある 本来付いてない何か分からんボタンを押すと <code>Unknown</code> で、パソコン画面上に 各種設定が出てきたぜ」</p>
<h2 id="PC-Engine のゲームパッドのボタン配置"><a href="#PC-Engine+%E3%81%AE%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%91%E3%83%83%E3%83%89%E3%81%AE%E3%83%9C%E3%82%BF%E3%83%B3%E9%85%8D%E7%BD%AE">PC-Engine のゲームパッドのボタン配置</a></h2>
<pre><code> &"Unknown"
&"ui_up" &"Joypad Button 1 (Right Action, Sony Circle, Xbox B, Nintendo A)"連射 &"Joypad Button 0 (Bottom Action, Sony Cross, Xbox A, Nintendo B)"連射
&"ui_left" &"ui_right"
&"ui_down" &"Joypad Button 1 (Right Action, Sony Circle, Xbox B, Nintendo A)" &"Joypad Button 0 (Bottom Action, Sony Cross, Xbox A, Nintendo B)"
&"Joypad Button 4 (Back, Sony Select, Xbox Back, Nintendo -)" &"Joypad Button 6 (Start, Xbox Menu, Nintendo +)"
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 つまり こうだ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 美しくないが その文字列に従って コーディングしてみるか、美しくないが」</p>
<pre><code class="gd"># 入力1つ1つに分解されて呼び出されるようだ
func _unhandled_input(event):
# 文字列だけだと、押したのか放したのか分からない
var event_as_text = event.as_text()
print("入力: " + event_as_text)
var description = "判定: "
# 初期状態は、ボタンを離しているということにする
var presentation = "."
# ボタンの状態(何もしていないときはこの関数自体が呼び出されない)
if event.is_pressed():
description += "pressed "
presentation = "■"
if event.is_released():
description += "released "
presentation = "."
# 操作したボタン
var button_number = -1
if event_as_text == &"Joypad Button 0 (Bottom Action, Sony Cross, Xbox A, Nintendo B)":
description += "Joypad Button 0"
button_number = 0
elif event_as_text == &"Joypad Button 1 (Right Action, Sony Circle, Xbox B, Nintendo A)":
description += "Joypad Button 1"
button_number = 1
elif event_as_text == &"Joypad Button 4 (Back, Sony Select, Xbox Back, Nintendo -)":
description += "Joypad Button 4"
button_number = 4
elif event_as_text == &"Joypad Button 6 (Start, Xbox Menu, Nintendo +)":
description += "Joypad Button 6"
button_number = 6
print(description)
# "Joypad Button 0 (Bottom Action, Sony Cross, Xbox A, Nintendo B)"
if button_number == 0:
$"GuiArtist/CanvasLayer/I値".text = presentation
# "Joypad Button 1 (Right Action, Sony Circle, Xbox B, Nintendo A)"
elif button_number == 1:
$"GuiArtist/CanvasLayer/II値".text = presentation
# "Joypad Button 4 (Back, Sony Select, Xbox Back, Nintendo -)"
elif button_number == 4:
$"GuiArtist/CanvasLayer/Select値".text = presentation
# "Joypad Button 6 (Start, Xbox Menu, Nintendo +)"
elif button_number == 6:
$"GuiArtist/CanvasLayer/Run値".text = presentation
var is_lever = false
for action in InputMap.get_actions():
if InputMap.event_is_action(event, action):
print("action: " + action)
# 十字キーを想定
if action == &"ui_left" or action == &"ui_right" or action == &"ui_up" or action == &"ui_down":
is_lever = true
# if action == &"JOY_AXIS_INVALID":
# print("JOY_AXIS_INVALID")
# elif action == &"JOY_AXIS_LEFT_X":
# print("JOY_AXIS_LEFT_X")
# elif action == &"JOY_AXIS_LEFT_Y":
# print("JOY_AXIS_LEFT_Y")
# elif action == &"JOY_AXIS_MAX":
# print("JOY_AXIS_MAX")
# elif action == &"JOY_AXIS_RIGHT_X":
# print("JOY_AXIS_RIGHT_X")
# elif action == &"JOY_AXIS_RIGHT_Y":
# print("JOY_AXIS_RIGHT_Y")
# elif action == &"JOY_AXIS_SDL_MAX":
# print("JOY_AXIS_SDL_MAX")
# elif action == &"JOY_AXIS_TRIGGER_LEFT":
# print("JOY_AXIS_TRIGGER_LEFT")
# elif action == &"JOY_AXIS_TRIGGER_RIGHT":
# print("JOY_AXIS_TRIGGER_RIGHT")
# elif action == &"JOY_BUTTON_A":
# print("JOY_BUTTON_A")
# elif action == &"JOY_BUTTON_B":
# print("JOY_BUTTON_B")
# elif action == &"JOY_BUTTON_BACK":
# print("JOY_BUTTON_BACK")
# elif action == &"JOY_BUTTON_DPAD_DOWN":
# print("JOY_BUTTON_DPAD_DOWN")
# elif action == &"JOY_BUTTON_DPAD_LEFT":
# print("JOY_BUTTON_DPAD_LEFT")
# elif action == &"JOY_BUTTON_DPAD_RIGHT":
# print("JOY_BUTTON_DPAD_RIGHT")
# elif action == &"JOY_BUTTON_DPAD_UP":
# print("JOY_BUTTON_DPAD_UP")
# elif action == &"JOY_BUTTON_GUIDE":
# print("JOY_BUTTON_GUIDE")
# elif action == &"JOY_BUTTON_INVALID":
# print("JOY_BUTTON_INVALID")
# elif action == &"JOY_BUTTON_LEFT_SHOULDER":
# print("JOY_BUTTON_LEFT_SHOULDER")
# elif action == &"JOY_BUTTON_LEFT_STICK":
# print("JOY_BUTTON_LEFT_STICK")
# elif action == &"JOY_BUTTON_MAX":
# print("JOY_BUTTON_MAX")
# elif action == &"JOY_BUTTON_MISC1":
# print("JOY_BUTTON_MISC1")
# elif action == &"JOY_BUTTON_PADDLE1":
# print("JOY_BUTTON_PADDLE1")
# elif action == &"JOY_BUTTON_PADDLE2":
# print("JOY_BUTTON_PADDLE2")
# elif action == &"JOY_BUTTON_PADDLE3":
# print("JOY_BUTTON_PADDLE3")
# elif action == &"JOY_BUTTON_PADDLE4":
# print("JOY_BUTTON_PADDLE4")
# elif action == &"JOY_BUTTON_RIGHT_SHOULDER":
# print("JOY_BUTTON_RIGHT_SHOULDER")
# elif action == &"JOY_BUTTON_RIGHT_STICK":
# print("JOY_BUTTON_RIGHT_STICK")
# elif action == &"JOY_BUTTON_SDL_MAX":
# print("JOY_BUTTON_SDL_MAX")
# elif action == &"JOY_BUTTON_START":
# print("JOY_BUTTON_START")
# elif action == &"JOY_BUTTON_TOUCHPAD":
# print("JOY_BUTTON_TOUCHPAD")
# elif action == &"JOY_BUTTON_X":
# print("JOY_BUTTON_X")
# elif action == &"JOY_BUTTON_Y":
# print("JOY_BUTTON_Y")
# 以上
if is_lever:
var velocity = Input.get_vector(
&"ui_left", # 左の方
&"ui_right", # 右の方
&"ui_up", # 上の方
&"ui_down") # 下の方
$"GuiArtist/CanvasLayer/→値".text = str(velocity.x)
$"GuiArtist/CanvasLayer/↓値".text = str(velocity.y)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 よく分からん。またあとで書き直そうぜ?」</p>
<h2 id="仮想キーを作らな"><a href="#%E4%BB%AE%E6%83%B3%E3%82%AD%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%89%E3%81%AA">仮想キーを作らな</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ゲームパッドと キーボード、両方の操作を プログラムするの めんどくさいぜ。<br />
仮想キーを作らな」</p>
<pre><code class="gd">&"VK_Ok"
&"VK_SystemMenu"
&"VK_FastForward"
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じで」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 キーボードが Push Any Key じゃなくなったが……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 1つ1つ 仮想の Ok ボタン当てはめていくの めんどくさいんで エンターキー使えだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 劣化よ、劣化!」</p>
<h2 id="メガドライブ風ゲームパッド"><a href="#%E3%83%A1%E3%82%AC%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E9%A2%A8%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%91%E3%83%83%E3%83%89">メガドライブ風ゲームパッド</a></h2>
<p><a href="https://crieit.now.sh/upload_images/8d05907725ada9894de7a7d8c4114fee653cd2188eaef.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8d05907725ada9894de7a7d8c4114fee653cd2188eaef.jpg?mw=700" alt="202310__photo__28-1256--GamePadBox-o2o0.jpg" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 まだ箱があるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/b7ac6cda3d71b51c8fc059e8e7ec640d653cd260df583.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b7ac6cda3d71b51c8fc059e8e7ec640d653cd260df583.jpg?mw=700" alt="202310__photo__28-1256--GamePadOpen-o2o0.jpg" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 これもUSBが入ってるな。 同じ 8 Bit Do というメーカーのようだぜ、知らんけど」</p>
<h2 id="8BitDo のコントローラーは粗悪品かも知らん。コントローラーが反応しなくなった"><a href="#8BitDo+%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AF%E7%B2%97%E6%82%AA%E5%93%81%E3%81%8B%E3%82%82%E7%9F%A5%E3%82%89%E3%82%93%E3%80%82%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%8C%E5%8F%8D%E5%BF%9C%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F">8BitDo のコントローラーは粗悪品かも知らん。コントローラーが反応しなくなった</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 終わった……」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 電池か?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 最後に挿したUSB端子のせいで おかしくなったとか 画面右下で言いわけがポップアップされたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 2時間 充電してみましょう。<br />
それで動かなかったら 床に叩きつけて 割りましょう」</p>
<h2 id="8BitDo のPC-Engine風のゲームパッドは、実用的な話を言えば、必ずドライバーの更新の手順を踏む必要がある"><a href="#8BitDo+%E3%81%AEPC-Engine%E9%A2%A8%E3%81%AE%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%91%E3%83%83%E3%83%89%E3%81%AF%E3%80%81%E5%AE%9F%E7%94%A8%E7%9A%84%E3%81%AA%E8%A9%B1%E3%82%92%E8%A8%80%E3%81%88%E3%81%B0%E3%80%81%E5%BF%85%E3%81%9A%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%81%AE%E6%9B%B4%E6%96%B0%E3%81%AE%E6%89%8B%E9%A0%86%E3%82%92%E8%B8%8F%E3%82%80%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B">8BitDo のPC-Engine風のゲームパッドは、実用的な話を言えば、必ずドライバーの更新の手順を踏む必要がある</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 捨てるか ドライバーを再インストールするか 考え中」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://support.8bitdo.com/">https://support.8bitdo.com/</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 サポートサイトはここにあるが、悪意のあるサイトか、そうでないか分からない。<br />
わたしが人柱になるんで、あとは頼む」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 PC-Engine風のゲームパッド用のドライバーをダウンロードすると説明書が入っているのでそれを読む」</p>
<p><a href="https://crieit.now.sh/upload_images/60575110b41fbd9a621a1ec7598e8ae1653d1b7b97f37.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/60575110b41fbd9a621a1ec7598e8ae1653d1b7b97f37.png?mw=700" alt="202310__godot__28-2330--8BitDo-HomeButton.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 8BitDo のゲームパッドには 上図のような柄のボタンが付いていて、 <strong>ホームボタン</strong>(Home Button) と呼ぶそうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ゲームパッドのUSB接続を抜き、ホームボタンを3秒押すと、赤いランプも青いランプも消えた状態になる。<br />
これが 電源オフの状態だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 セレクトボタンを押したまま、ホームボタンを押す」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 すると 青いランプと 黄色いランプが点滅する」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 無線ではなく、USBケーブルを使って ゲームパッドとPCを接続する」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 すると ゲームパッド側は <strong>USB フラッシュ・ドライブ</strong> になっているらしく、<br />
そのファイル・エクスプローラーが開く」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>8BitDo_PCE_Gamepad_Fw_V4.02.dat</code> ファイルを、 USB フラッシュ・ドライブへ<br />
コピー貼り付けする」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 コピーが終わったら USBケーブルを抜く」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 まだ 青いランプと 黄色いランプが点滅しているから、<br />
そのランプが消えるよう、ホームボタンを 3秒間 押し続ける」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ランプが消えたら更新完了」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あとは 工場から出荷されて自宅に届いたつもりになって 普通にゲームパッドを使えば 使える」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 だったら 使用前に ドライバーの更新をすることを 必須にしてほしい」</p>
<h2 id="8BitDO のメガドライブ風のゲームパッドも、実用的な話を言えば、ドライバーを再インストールする必要がある"><a href="#8BitDO+%E3%81%AE%E3%83%A1%E3%82%AC%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E9%A2%A8%E3%81%AE%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%91%E3%83%83%E3%83%89%E3%82%82%E3%80%81%E5%AE%9F%E7%94%A8%E7%9A%84%E3%81%AA%E8%A9%B1%E3%82%92%E8%A8%80%E3%81%88%E3%81%B0%E3%80%81%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%82%92%E5%86%8D%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B">8BitDO のメガドライブ風のゲームパッドも、実用的な話を言えば、ドライバーを再インストールする必要がある</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 8BitDO のメガドライブ風のゲームパッドも、実用的な話を言えば、ドライバーを再インストールする必要がある」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 何の案内も無いのに 探した者だけが見つけることができるところに 手順だけあるの、海外製品のサポートよね~」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 とりあえず 自分の持ってる製品に合ったドライバーを入手しろだぜ。ゲームパッドのどこかに型番が刻印されているだろう」</p>
<p>📂 <code>M30_24G_Mini_GamepadV208</code></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 パターンがいくつかあるようなので、わたしのケースで説明する」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ゲームパッドとPCが接続されていない状態にする。USBケーブルを抜くとか」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ゲームパッドのど真ん中にあるスタートボタンを、体感で10秒ぐらい長押しする。<br />
すべてのランプが消灯する」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 L、Rボタンの両方を押しっぱなしにして、スタートボタンを押す。<br />
これで 黄色いランプと、青いランプが点灯し続ける。これは <strong>アップグレード・モード</strong> と呼ぶそうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 USBケーブルを使って、ゲームパッドとPCを接続する」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 すると ゲームパッド側は <strong>USB フラッシュ・ドライブ</strong> になっているらしく、<br />
そのファイル・エクスプローラーが開く」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>CopyFwToUDisk.exe</code> ファイルをダブルクリックする」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>Open</code> ボタンをクリックして、<code>*.dat</code> ファイルが添付されてるから、それを選ぶ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>Update</code> ボタンをクリックする。黒い画面が出る。それが勝手に閉じられるまで待つ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 また、ゲームパッドとPCを接続しているUSBケーブルを抜く」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 スタートボタンを 3秒間 押し続ける。これでコントローラーの電源がオフになる」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あとは 工場から出荷されて自宅に届いたつもりになって 普通にゲームパッドを使えば 使える」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 だったら 使用前に ドライバーの更新をすることを 必須にしてほしい」</p>
<h1 id="📅 2023-10-29 sun ⏰ 13:16"><a href="#%F0%9F%93%85+2023-10-29+sun+%E2%8F%B0+13%3A16">📅 2023-10-29 sun ⏰ 13:16</a></h1>
<h2 id="XBox風コントローラー"><a href="#XBox%E9%A2%A8%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC">XBox風コントローラー</a></h2>
<p><a href="https://crieit.now.sh/upload_images/82a1c45cab300b75d20fd21f39368257653ddc9bbc37a.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/82a1c45cab300b75d20fd21f39368257653ddc9bbc37a.jpg?mw=700" alt="202310__photo__29-1312--XBoxController-o2o0.jpg" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 次は XBox風のコントローラーだぜ。ぷちぷちにくるまれてただけで、説明書もないぜ。<br />
メーカー名も刻印されてないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ USB端子を挿そうぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 USB端子を挿しただけで認識したぜ。もう すぐに使える状態のようだぜ」</p>
<h2 id="8BitDo のコントローラーは粗悪品かも知らん"><a href="#8BitDo+%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AF%E7%B2%97%E6%82%AA%E5%93%81%E3%81%8B%E3%82%82%E7%9F%A5%E3%82%89%E3%82%93">8BitDo のコントローラーは粗悪品かも知らん</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 8BitDo のメガドライブ風のゲームパッドが反応しなくなった。<br />
もう ドライバーの再インストールなんてしないぜ クソだろ このゲームパッド」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Amazon のレビューに ☆1 付けたった」</p>
<h2 id="PS風コントローラーは粗悪品だった"><a href="#PS%E9%A2%A8%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AF%E7%B2%97%E6%82%AA%E5%93%81%E3%81%A0%E3%81%A3%E3%81%9F">PS風コントローラーは粗悪品だった</a></h2>
<p><a href="https://crieit.now.sh/upload_images/90bdabbc86eb77690145a6d07539536f653e0f02e5e67.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/90bdabbc86eb77690145a6d07539536f653e0f02e5e67.jpg?mw=700" alt="202310__photo__29-1646--PSControllerPacked-o2o0.jpg" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 新品が ぷちぷちに くるまれて送られてくるんだな。こんなんでいいんだな」</p>
<p><a href="https://crieit.now.sh/upload_images/4886338600a6871d8b9457275519573b653e0f33c2f05.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4886338600a6871d8b9457275519573b653e0f33c2f05.jpg?mw=700" alt="202310__photo__29-1647--PSController-o2o0.jpg" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 USB端子を挿してみるか」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 左側の十字キーの上ボタンと、右ボタンが反応しないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 もっと調べてみろだぜ。他のボタンも反応しないかもしれないぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 嬉しくないな……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 □、×、○ボタンも利かねーっ!」</p>
<h2 id="PS風コントローラーうまくいかね"><a href="#PS%E9%A2%A8%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%86%E3%81%BE%E3%81%8F%E3%81%84%E3%81%8B%E3%81%AD">PS風コントローラーうまくいかね</a></h2>
<p><a href="https://crieit.now.sh/upload_images/9d23b05203cc35c65ad6f9ecc9f70ba5654908ec80d00.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9d23b05203cc35c65ad6f9ecc9f70ba5654908ec80d00.jpg?mw=700" alt="202311__photo__07--RegularPSController-o2o0.jpg" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 PCでうまくいかね。BGM消えたり、レバーが入りっぱなしだったり分かんね。もう止めよかな」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://manuals.playstation.net/document/jp/ps4/">PS4 ユーザーズガイド</a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 他にも 買ったコントローラー まだ来ないのか」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 即売会への時間も そろそろ無くなってきたし ゲームパッドの調査は打切りとする」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18617
2023-10-16T19:15:36+09:00
2023-10-26T19:57:57+09:00
https://crieit.net/posts/Godot-652d0d4895975
Godot でRPGの自作戦闘を作ろうぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/df469dd17508e41db113151cb6cb95f9652d088e59449.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/df469dd17508e41db113151cb6cb95f9652d088e59449.png?mw=700" alt="202310__godot__16-0007--戦闘シーン.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 何もできてないが」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 とりあえず 会話シーンと 戦闘シーンのスクリプトを分けるところから始めたらいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 自作RPGの戦闘を作る教科書か何かは無いのかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 まあ だらだら 始めて 困ってから考えようぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/b38042c51be510f660e9ee8f22704077652d0a30e3464.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b38042c51be510f660e9ee8f22704077652d0a30e3464.png?mw=700" alt="202310__godot__16-1901--戦闘スクリプト-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 画面下のメッセージ・ウィンドウの制御をやっと できたというところで<br />
戦闘シーン作るのは ハードルが高いな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 その <code>ビジュアルノベル部門</code> と書いてある本のところに<br />
<code>バトル部門</code> という本が増えたらいいんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 まあ 今のままでは何も進まんし<br />
ソースコードの掃除ぐらいするか」</p>
<h2 id="どこからでも飛ぶ"><a href="#%E3%81%A9%E3%81%93%E3%81%8B%E3%82%89%E3%81%A7%E3%82%82%E9%A3%9B%E3%81%B6">どこからでも飛ぶ</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ランダム・エンカウントの戦闘シーンって いつでも 突然 戦闘シーンへ飛ぶよな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 同義反復よね」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 現在の状態を知っていて、それをオフにしたり、<br />
オフにしたときの状態を覚えていて あとでその状態に戻りたいこととかあるよな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 スタックを使えだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 現在の状態が プログラムを書いた時点では 分からないこともある」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 専用のコマンドを用意したらいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>push_and_hide</code> と、 <code>pop_and_show</code> かな?」</p>
<pre><code class="gd"># どの部門で、そのキーを押されたら、どの部門へ移動するか?
var key_pressed_mappings = {
"📗ビジュアルノベル部門" : {
KEY_ESCAPE : "📗システムメニュー部門",
},
"📗システムメニュー部門" : {
KEY_ESCAPE : "📗ビジュアルノベル部門",
},
}
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 キーを押したときに どこへ飛ぶかは指定できるが、<br />
命令を書けないのは不便だよな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そこを命令ブロックに改造するか……」</p>
<pre><code class="gd"># どの部門で、そのキーを押されたら、ト書きを1つ実行できる
var key_pressed_stage_directions = {
"📗ビジュアルノベル部門" : {
KEY_ESCAPE :
"""\
!
department: 📗システムメニュー部門
""",
},
"📗システムメニュー部門" : {
KEY_ESCAPE :
"""\
!
department: 📗ビジュアルノベル部門
""",
},
}
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ここまでは でけたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 その ト書き に、どのメッセージ・ウィンドウを閉じて、<br />
どのメッセージ・ウィンドウを開くか 書けばいいのよ」</p>
<pre><code class="gd"># どの部門で、そのキーを押されたら、ト書きを1つ実行できる
var key_pressed_stage_directions = {
"📗ビジュアルノベル部門" : {
KEY_ESCAPE :
"""\
!
m-wnd: ■下, hide
department: 📗システムメニュー部門
m-wnd: ■中央
""",
},
"📗システムメニュー部門" : {
KEY_ESCAPE :
"""\
!
m-wnd: ■中央, hide
department: 📗ビジュアルノベル部門
m-wnd: ■下
""",
},
}
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こう書けるようにしたけど、 <code>■下</code> メッセージ・ウィンドウは出てないかもしれないし、<br />
勝手に隠したり、勝手に出したりしたら 出てなかったメッセージ・ウィンドウが出ることになるかも」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 そこを <code>%current_it_then_push_to_stack%</code> とか、 <code>%pop_from_stack_then_current_it%</code> とか、書けないかだぜ?」</p>
<pre><code class="gd"># どの部門で、そのキーを押されたら、ト書きを1つ実行できる
var key_pressed_stage_directions = {
"📗ビジュアルノベル部門" : {
KEY_ESCAPE :
# `%hide_current_it_then_push_it_to_stack%` - 現在のウィンドウを隠し、そして、それをスタックへプッシュする
"""\
!
m-wnd: %hide_current_it_then_push_it_to_stack%
department: 📗システムメニュー部門
m-wnd: ■中央
""",
},
"📗システムメニュー部門" : {
KEY_ESCAPE :
# `%pop_it_from_stack_then_show_current_it%` - スタックからウィンドウをポップし、そして、それを見せる
"""\
!
m-wnd: ■中央, hide
department: 📗ビジュアルノベル部門
m-wnd: %pop_it_from_stack_then_show_current_it%
""",
},
}
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こう書けるようにしたぜ」</p>
<h1 id="戦闘シーンを分けたい"><a href="#%E6%88%A6%E9%97%98%E3%82%B7%E3%83%BC%E3%83%B3%E3%82%92%E5%88%86%E3%81%91%E3%81%9F%E3%81%84">戦闘シーンを分けたい</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 今回の改造の応用で、ビジュアルノベル部門と、バトル部門を分けなさいよ」</p>
<pre><code class="gd"> # ...
[
# 部門変更
"""\
!
m-wnd: ■下, hide
department: 📗バトル部門
goto: §初戦闘シーン
m-wnd: ■下
""",
],
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じで バトルシーンへ飛んで」</p>
<pre><code class="gd"> # ...
[
# 部門変更
"""\
!
m-wnd: ■下, hide
department: 📗ビジュアルノベル部門
goto: §崎川市最強振興会館
m-wnd: ■下
""",
],
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じで バトルシーンから戻ってこれるようにしたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 関数みたいだな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 これで 下地は整ったわね」</p>
<h2 id="引数が要るのでは?"><a href="#%E5%BC%95%E6%95%B0%E3%81%8C%E8%A6%81%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%AF%EF%BC%9F">引数が要るのでは?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 これが関数とするのなら、引数を渡せないと 実用的じゃないな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>%argument1%</code> とか書ければいいんじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 命令の至る所を <code>%argument1%</code> という書き方に対応させなくちゃいけないし、<br />
パーサーから見て どういう書き方がいいのか 調べないといけないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>%arg_1%</code> とかでいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そこは 数字にする必要があるかだぜ? 名前じゃダメかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 名前の方が ゲームスクリプト らしいかしらねえ?」</p>
<pre><code class="gd"> # ...
[
# 部門変更
"""\
!
m-wnd: ■下, hide
department: 📗バトル部門
arg: %clear%
arg: monster, ヘム将棋
arg: return, §2回目戦闘シーン
goto: §初戦闘シーン
m-wnd: ■下
""",
],
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じで実引数を渡して」</p>
<pre><code class="gd"> # 初戦闘シーン
"§初戦闘シーン":[
# コダック
"""\
!
telop: 崎川駅周辺地図, hide
bg: 崎川駅周辺地図, hide
bg: 戦闘シーン
bg: 川掘町線ロード
bgm: 🎵バトル1, 8.6
#monster: きふわらべ
monster: %arg_monster%
""",
# 2345678901234567890
"""\
お父ん
「おっと 戦闘シーンはまだ
できてないらしいぜ
""",
"""\
!
monster: %arg_monster%, hide
""",
# 部門変更
"""\
!
m-wnd: ■下, hide
department: 📗ビジュアルノベル部門
goto: %arg_return%
m-wnd: ■下
""",
],
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じで仮引数を受け取れるようにしたぜ。<br />
今日はここまでだな」</p>
<h1 id="📅 2023-10-17 tue ⏰ 18:52"><a href="#%F0%9F%93%85+2023-10-17+tue+%E2%8F%B0+18%3A52">📅 2023-10-17 tue ⏰ 18:52</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ツツジが咲いている背景画像が欲しいんだが」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 お父んなら 2時間で描けるだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 モデルがあるから フリー素材で補えないのが 不利よねえ」</p>
<h2 id="話しは飛ぶが戦闘画面の仕様は固めた"><a href="#%E8%A9%B1%E3%81%97%E3%81%AF%E9%A3%9B%E3%81%B6%E3%81%8C%E6%88%A6%E9%97%98%E7%94%BB%E9%9D%A2%E3%81%AE%E4%BB%95%E6%A7%98%E3%81%AF%E5%9B%BA%E3%82%81%E3%81%9F">話しは飛ぶが戦闘画面の仕様は固めた</a></h2>
<p><a href="https://crieit.now.sh/upload_images/247212bf40d94a26326a909307a589e9652ea6529e85f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/247212bf40d94a26326a909307a589e9652ea6529e85f.png?mw=700" alt="202310__godot__18-0019--BattleScene.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 話しは飛ぶが戦闘画面の仕様は固めたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 こういうの先に出すと アイデアマン気取りの変人が<br />
わたしはこういう風にした方がいいとか 言ってきて 後から 真似されたとか<br />
言い出すんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そういう輩は 自分を大きく見せれるように ファンがいっぱいいるとこに 噛みつきにいくんだぜ。<br />
わたしに嚙みついても 自分を大きく見せられないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 わらう」</p>
<h2 id="仮組した"><a href="#%E4%BB%AE%E7%B5%84%E3%81%97%E3%81%9F">仮組した</a></h2>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1714326815815450982?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 仮組した。今日は終わり」</p>
<h1 id="📅 2023-10-19 thu もうちょい何とかならんの?"><a href="#%F0%9F%93%85+2023-10-19+thu+%E3%82%82%E3%81%86%E3%81%A1%E3%82%87%E3%81%84%E4%BD%95%E3%81%A8%E3%81%8B%E3%81%AA%E3%82%89%E3%82%93%E3%81%AE%EF%BC%9F">📅 2023-10-19 thu もうちょい何とかならんの?</a></h1>
<p><a href="https://crieit.now.sh/upload_images/a18022121d30d8ed5574486c8cd8aa626531089475bc9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a18022121d30d8ed5574486c8cd8aa626531089475bc9.png?mw=700" alt="202310__godot__19-1943--BattleScene.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 キャラクター画像をもう少し小さくして データ表示の面積を増やすかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 戦闘中の数字表示は テロップ でやるという建付けなの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 会話シーンと同じだぜ。一貫性があるだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 城の堅さなどの 4つの数字が 目立たなくないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ウィンドウの枠も付けるかどうか 考えどこだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/c4e9961e252fc5af9fb5019c4881702e653124d5332d8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c4e9961e252fc5af9fb5019c4881702e653124d5332d8.png?mw=700" alt="202310__godot__19-2143--BattleScene.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 シンメトリーに気を使って バランスを安定させて、<br />
<strong>主な瑕</strong> は 画面から省くことにしたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 すっきりさせたわねえ。<br />
ごちゃごちゃ している画面を 長時間観るのは つらいですからねえ」</p>
<h2 id="トランジションが欲しくない?"><a href="#%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B8%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E6%AC%B2%E3%81%97%E3%81%8F%E3%81%AA%E3%81%84%EF%BC%9F">トランジションが欲しくない?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 トランジションが欲しくない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 シェーダーを書くのは嫌だ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 スリープ機能があれば、シナリオ・スクリプトで疑似的に実装できるのでは?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://worktoolsmith.com/godot-sleep-wait/">[Godot] 一時スリープ(ウェイト)を実装する!1行で書けます</a></p>
<pre><code class="gd">yield(get_tree().create_timer(1.0), "timeout")
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 分けわからん命令だが 真似てみるか」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot 4.x では使えね」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://ask.godotengine.org/154730/in-gdscript-is-there-codes-looks-like-pythons-time-sleep">In gdscript, is there codes looks like "python's time.sleep()"</a></p>
<pre><code class="gd"># wait 2 seconds
await get_tree().create_timer(2).timeout
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 スリープしないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>async</code> が無いのに <code>await</code> が効くの?」</p>
<h2 id="スリープは自力実装した"><a href="#%E3%82%B9%E3%83%AA%E3%83%BC%E3%83%97%E3%81%AF%E8%87%AA%E5%8A%9B%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%9F">スリープは自力実装した</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 サンプル動かないので、スリープは自力実装した」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1715041232815317005?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 トランジションも実装したぜ」</p>
<h1 id="📅 2023-10-20 fri ⏰ 19:15"><a href="#%F0%9F%93%85+2023-10-20+fri+%E2%8F%B0+19%3A15">📅 2023-10-20 fri ⏰ 19:15</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 戦闘画面じゃなくて、戦闘を作りましょう」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <strong>玉の遠さ</strong> を 10 にして、 1ターン毎に 3 減って 4ターンで戦闘終了するのを<br />
試しに作ってみればいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <strong>玉の遠さ</strong> が 1以上か、1未満か 分ける処理が必要だなあ。<br />
ト書き で どう書こう?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <strong>GDScript</strong> 自体がゲームスクリプトなのだから、<br />
シナリオの途中で GDScript で書けないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot に <strong>匿名関数</strong> が有るかないか 調べてみるか」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 あるのでは?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://gamedevacademy.org/gdscript-functions-tutorial-complete-guide/#GDScript_Anonymous_Functions">GDScript Anonymous Functions</a></p>
<p><a href="https://crieit.now.sh/upload_images/a9dd9b19a09d4d1e299da7d1f8e983d665325f7e78415.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a9dd9b19a09d4d1e299da7d1f8e983d665325f7e78415.png?mw=700" alt="202310__godot__20-2005--AnonymousFunction-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こういう風に シナリオ・スクリプト に書くことができたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/dccb204a3b1bb1b3da5c66cf9ea5b21865326005f3f1c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dccb204a3b1bb1b3da5c66cf9ea5b21865326005f3f1c.png?mw=700" alt="202310__godot__20-2009--AnonymousFunctionCall-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 シナリオ・リーダーの方には こう書けばいいんだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 これを どう シナリオ・スクリプト に組み込んだら 良さそうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 引数で渡すものって 無くない? 全部 グローバル変数でいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そういう やり方もある」</p>
<p><a href="https://crieit.now.sh/upload_images/fefebb0366d47cc364cca935ab20e62d6532651fb3621.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fefebb0366d47cc364cca935ab20e62d6532651fb3621.png?mw=700" alt="202310__godot__20-2030--AnonymousFunction_o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こういう感じで 変数をセットできるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 変数の書式は コマンド・プロンプトの環境変数みたいな <code>%xxxx%</code> で行くのか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 他にいい案があれば変えてもいいぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 開きと 閉じが 分かんないのよね。<br />
<code>${xxx}</code> か、 <code>{xxx}</code> が いいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 その見た目だと 式が書けるように見えてしまう。<br />
あくまで 変数なんだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>$'xxx'</code> で どうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 視覚的に見にくいぜ。それだったら <code><xxx></code> とかの方が良くないかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 HTMLタグを将来的に実装する予定がないなら いいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>%xxxx%</code> でいいかもしれないな」</p>
<h2 id="匿名関数の中で Goto命令を使えないの?"><a href="#%E5%8C%BF%E5%90%8D%E9%96%A2%E6%95%B0%E3%81%AE%E4%B8%AD%E3%81%A7+Goto%E5%91%BD%E4%BB%A4%E3%82%92%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%81%AE%EF%BC%9F">匿名関数の中で Goto命令を使えないの?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 匿名関数の中で Goto命令を使えないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/0196dfbdfdf66760c4236c59a12a97bf65326e0d65ad2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0196dfbdfdf66760c4236c59a12a97bf65326e0d65ad2.png?mw=700" alt="202310__godot__20-2108--AnonymousFunction-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 こんな感じで使えるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 もう ほとんどの機能は 実装できてるんじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 シナリオ・スクリプトじゃなくて GDScript 剥き出しだけど、いいんじゃないの?」</p>
<h2 id="戦闘データはどこに書く?"><a href="#%E6%88%A6%E9%97%98%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AF%E3%81%A9%E3%81%93%E3%81%AB%E6%9B%B8%E3%81%8F%EF%BC%9F">戦闘データはどこに書く?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>玉の遠さ</code> みたいな 戦闘シーンだけで使うデータって どこに書けばいいの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 どこでもいいんじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>BattleArtist</code> でどうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そんな肩書きのやつ いるかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 スコアラー(Scorer)で いいんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 しっくりくるぜ。 それで」</p>
<p><a href="https://crieit.now.sh/upload_images/5fbef252917411d2e8fad20bdbe6d2c2653295ef35b1b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5fbef252917411d2e8fad20bdbe6d2c2653295ef35b1b.png?mw=700" alt="202310__godot__20-2359--Scorer-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 スコアラーが 戦闘用紙を持っているという建付けにしようぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/1471df849730a687d13b65b57d8e8b69653297b83306f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1471df849730a687d13b65b57d8e8b69653297b83306f.png?mw=700" alt="202310__godot__21-0007--BattleSheet.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 データは これでいいかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 これは キャラ・データじゃなくて、戦闘シーンのデータだというのを はっきりさせた方が<br />
あとで間違わなくて済むんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 デパートメントという言葉が なんか合ってないな。 シーンに名称変更していいかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 シーンは Godot と用語が被るんで」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot ほんと国語がクソだな」</p>
<p><a href="https://crieit.now.sh/upload_images/a5a489331cedf5f7a7220dda90a7ba3865329af4a42a7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a5a489331cedf5f7a7220dda90a7ba3865329af4a42a7.png?mw=700" alt="202310__godot__21-0021--MonsterData.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 モンスターデータは こんな感じで 書いておこうぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 しかし Idって ソースにハードコーディングするもんじゃないな、分かりづらいな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ルックアップ関数と併用してはどうか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 それでいこう」</p>
<h2 id="台詞の中の変数"><a href="#%E5%8F%B0%E8%A9%9E%E3%81%AE%E4%B8%AD%E3%81%AE%E5%A4%89%E6%95%B0">台詞の中の変数</a></h2>
<p><a href="https://crieit.now.sh/upload_images/f5abcf4165ce9171b71152726ead33046532b7139ed48.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f5abcf4165ce9171b71152726ead33046532b7139ed48.png?mw=700" alt="202310__godot__21-0220--Name--o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 台詞の中で 変数を使いたいことってあるよな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 Godot で正規表現は使えるのかしら?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 有るようだぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/classes/class_regex.html">RegEx</a></p>
<pre><code class="gd"> """\
<span>{</span><span>{</span>arg_sente_name<span>}</span><span>}</span>
「銀が上がる
""",
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ハンドルバーズなんかを真似て こういう書き方の方がいいのかなあ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>%xxxx%</code> を廃止して <code><span>{</span><span>{</span>xxxx<span>}</span><span>}</span></code> に統一してくれだぜ」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1715441212856074393?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 少し 仮組を進めた 今日はここまで」</p>
<h1 id="📅 2023-10-23 mon ⏰ 21:28"><a href="#%F0%9F%93%85+2023-10-23+mon+%E2%8F%B0+21%3A28">📅 2023-10-23 mon ⏰ 21:28</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 もう疲れた」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 まあ 1回 プレイしてくれだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/afc62d6d8a806ae1805e08c2b403522b6536691ff13ec.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/afc62d6d8a806ae1805e08c2b403522b6536691ff13ec.png?mw=700" alt="202310__godot__23-2136--BattleScene.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ここに <strong>たたかう</strong> とか コマンドを付ければいいのかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 とりあえず <strong>攻める</strong>、 <strong>守る</strong>、 <strong>逃げる</strong> の3つあればいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d25f3144d2b4f2de236c4815e5daabb865366c6b3e3e1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d25f3144d2b4f2de236c4815e5daabb865366c6b3e3e1.png?mw=700" alt="202310__godot__23-2136--BattleScene-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 今日は 左下に メニューを作るところまで がんばるかあ」</p>
<h2 id="下準備"><a href="#%E4%B8%8B%E6%BA%96%E5%82%99">下準備</a></h2>
<p><a href="https://crieit.now.sh/upload_images/c8ec078992ede7c27ba82415b379ef05653687431a91a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c8ec078992ede7c27ba82415b379ef05653687431a91a.png?mw=700" alt="202310__godot__23-2345--Initialize.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 この初期プロパティの設定が よく頭から忘れられて 思ったように動かない原因になるんで<br />
廃止したいぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ 初期値は どうすんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 最初のセクションは、配列の先頭の要素でいいだろ」</p>
<h2 id="ウィンドウの表示状態の現状復帰"><a href="#%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E8%A1%A8%E7%A4%BA%E7%8A%B6%E6%85%8B%E3%81%AE%E7%8F%BE%E7%8A%B6%E5%BE%A9%E5%B8%B0">ウィンドウの表示状態の現状復帰</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 システムメニュー部門から ビジュアルノベル部門に戻ってくるとき、<br />
新しく表示したウィンドウは閉じて、閉じたウィンドウは開くという<br />
復帰処理が難しいな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 差分で行くか、スナップショットで行くか 方法は分かれるけど」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 表示されていてほしいウィンドウ、表示されていてほしくないウィンドウ、<br />
網羅的に全部書く チェックポイントを通るようにしないと<br />
一度壊れた 状態 は復元不可能な気がするぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 デバッグのしやすさを取るなら スナップショット を選ぶべきでは?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 部門を切り替えるときは 任意の状態から 任意の状態へ 突然ワープするから 全結合、<br />
全結合なんか 網羅したくないしな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 表示しておかなければならないウィンドウ、 表示が残っていても消えていてもいずれでも構わないウィンドウ、<br />
表示されていてはいけないウィンドウ を宣言的に記述すればいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>Main</code> っていうノード作ってたけど、 <code>SwitchDepartment</code> みたいな名前の方がいいかな?」</p>
<h1 id="📅 (2023-10-24 tue) ⏰23:35 部門切替"><a href="#%F0%9F%93%85+%282023-10-24+tue%29+%E2%8F%B023%3A35+%E9%83%A8%E9%96%80%E5%88%87%E6%9B%BF">📅 (2023-10-24 tue) ⏰23:35 部門切替</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 最近眠いし、2時までな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>goto</code> は シナリオを飛ぶが、 <code>department</code> は 部門を切り替えるんだぜ。<br />
コマンドの意味は似ているが 動きは全然 異なるな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>department</code> では、 <strong>(1)最後に表示していたウィンドウの状態の記憶</strong> と、<br />
<strong>(2)以前に記憶していたウィンドウの状態の復元</strong> の2つの機能がほしいわよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 1つ1つ プログラム組むか~」</p>
<h2 id="メッセージ・ウィンドウのコマンド"><a href="#%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%83%BB%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89">メッセージ・ウィンドウのコマンド</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 わたしの仕様では メッセージ・ウィンドウと、ビューイング・ウィンドウという2種類あるんだが、<br />
<code>m_wnd</code> 、 <code>v_wnd</code> というコマンド名と、<br />
<code>wnd_m</code> 、 <code>wnd_v</code> というコマンド名だったら、<br />
どっちが 取っつきやすいかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>gui_m</code> 、 <code>gui_v</code> という第3の案もあるのでは?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 テロップとか 背景とか はっきりしてるけど、<br />
それ以外は GUI という くくり よね」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>gui_msg_wnd</code> 、 <code>gui_view_wnd</code> とキータイピングさせるかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 長い」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 メッセージ・ウィンドウの切替えは そんなに多く起こらないけど、<br />
ビューイング・ウィンドウの方が 将来的にトータルで見ると 多く起こる可能性があるんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あるいは ビューイング・ウィンドウなんか 廃止か」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 枠の表示と、メッセージの表示を分けてはどうか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 というより、管理がめんどくさいんで 枠の表示と メッセージの表示を わざわざ くっつけたんだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 じゃあ 現状維持にしましょう」</p>
<h2 id="窓を非表示にすることと、部門切替で一時的に窓が非表示になることの区別"><a href="#%E7%AA%93%E3%82%92%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%81%AB%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A8%E3%80%81%E9%83%A8%E9%96%80%E5%88%87%E6%9B%BF%E3%81%A7%E4%B8%80%E6%99%82%E7%9A%84%E3%81%AB%E7%AA%93%E3%81%8C%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AE%E5%8C%BA%E5%88%A5">窓を非表示にすることと、部門切替で一時的に窓が非表示になることの区別</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 スナップショットは currently な状態ではなく、 last の状態を記憶しなくちゃいけないのか」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>department</code> 命令に ウィンドウの状態の保存と復元が 盛り込まれたので、<br />
<code>m_wnd</code> 命令の <code>%hide_current_it_then_push_it_to_stack%</code> と、 <code>%pop_it_from_stack_then_show_current_it%</code> の機能は廃止だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 シンプルになったな」</p>
<h1 id="📅 2023-10-26 thu やる気ナッシング"><a href="#%F0%9F%93%85+2023-10-26+thu+%E3%82%84%E3%82%8B%E6%B0%97%E3%83%8A%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0">📅 2023-10-26 thu やる気ナッシング</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 もう やる気無いけど」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 分かった 分かった。<br />
メッセージ・ウィンドウを表示するコマンドだが、表示した順序を覚えておいてくれだぜ。<br />
<strong>全順序</strong>」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 全順序」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <strong>デターミニスティック</strong> にするのが 不具合も少なくて済むわよね」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 デターミニスティック」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 お父んが ゲームを作らなければ、<br />
数学も 情報処理も身に付いてないやつが わたしは頑張っていますと宣伝しながら<br />
安い賃金、高い販売価格で ぐちゃぐちゃのプログラムを売りつけるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そんなやつは 地上で息吸っていてはいけないよな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 そうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 少し戦うかあ」</p>
<p>(カタ カタ カタ カタ)</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 メッセージ・ウィンドウの表示順は 覚えておくようにしたぜ」</p>
<h2 id="コマンド欄"><a href="#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E6%AC%84">コマンド欄</a></h2>
<p><a href="https://crieit.now.sh/upload_images/70a65d2636c71c2bce65587d98808a356539a35f7a058.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/70a65d2636c71c2bce65587d98808a356539a35f7a058.png?mw=700" alt="202310__godot__26-0822--BattleCommand.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 コマンド欄が メッセージ・ウィンドウになってしまっている。<br />
選択肢に直したいぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 キータイピング表示と違って、すぐに全部表示する現象に 名前は有るかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 メッセージ・スピード 5 とかじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 キャラクターズ・パー・セコンド(Characters Per Second;1秒当たりの文字数)とか<br />
付けてみるかな? 略称は <code>cps</code> ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>cps</code> とか 分かりづらくないか? <code>msg_speed:20</code> とかでいいのでは?」</p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18608
2023-10-09T13:39:39+09:00
2023-10-10T03:48:59+09:00
https://crieit.net/posts/Godot-6523840bafde8
Godot で一時停止を実装しようぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 例えば エスケープ・キーを押したら ゲームがピタッと 一時停止するような、制御を練習しようぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ポーズ機能ぐらい 標準で実装されてないのか? 先に調べてみろだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 調べていて でてきたんだが <strong>BGM</strong> って和製英語で 海外人に通じないみたいだな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 和製英語で検索するのは 止めなさい」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そんなん言ったって 和製英語を通じて 世の中を見てるし できあがった土台を疑うのは大変だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 ポーズ機能は フレームワークで用意されているようだぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/tutorials/scripting/pausing_games.html">GODOT DOCS / Pausing games and process mode</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 説明読んでも分からんし、使って覚えるかあ」</p>
<h1 id="ルートを停止すると、ルートも止まる"><a href="#%E3%83%AB%E3%83%BC%E3%83%88%E3%82%92%E5%81%9C%E6%AD%A2%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%83%AB%E3%83%BC%E3%83%88%E3%82%82%E6%AD%A2%E3%81%BE%E3%82%8B">ルートを停止すると、ルートも止まる</a></h1>
<pre><code class="gd">func _unhandled_key_input(event):
# 何かキーを押したとき
if event.is_pressed():
# エスケープ・キー
if event.keycode == KEY_ESCAPE:
if not get_tree().paused:
# 全体を止める
get_tree().paused = true
else:
# 全体を止めているのを解除
get_tree().paused = false
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ルートで 木を停止すると、ルートも止まるので 上記のコードでは 一時停止を解除できない」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 矛盾が無いぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 素直な挙動だから、これで 狙って指定したノードだけ 一時停止できそうね」</p>
<h1 id="どのノードを止めたらゲームが止まるの?"><a href="#%E3%81%A9%E3%81%AE%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E6%AD%A2%E3%82%81%E3%81%9F%E3%82%89%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%8C%E6%AD%A2%E3%81%BE%E3%82%8B%E3%81%AE%EF%BC%9F">どのノードを止めたらゲームが止まるの?</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 どのノードを止めたらゲームが止まるの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 アミバみたいだな」</p>
<p><a href="https://crieit.now.sh/upload_images/f69d80dd4338d8bcd3aa2b45f6f28ed5652391b469b49.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f69d80dd4338d8bcd3aa2b45f6f28ed5652391b469b49.png?mw=700" alt="202310__godot__09-1437--Tree.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 どのノードを止めるといった 分け方をしてないしな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 なんか よく分からんなあ。 お父ん、いったん 思うように 再構成してみてくれだぜ」</p>
<h1 id="ツリーを再構成しようぜ?"><a href="#%E3%83%84%E3%83%AA%E3%83%BC%E3%82%92%E5%86%8D%E6%A7%8B%E6%88%90%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">ツリーを再構成しようぜ?</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d75cd1af5624d7b6865ec8a79013b25d652393a824217.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d75cd1af5624d7b6865ec8a79013b25d652393a824217.png?mw=700" alt="202310__godot__09-1445--ScenarioWritere-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ゲーム制作の チーム作業を 模擬して、<br />
第2階層のフォルダーには 誰がそのフォルダーを開ければいいのかが分かるように<br />
役職名を書いていこう」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ある種の ダイナミック・プログラミング(Dynamic Programming;動的計画法)を行うのね」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 手の付けやすいところを先に固めていけば 難しい所が最後に残るわけか」</p>
<p><a href="https://crieit.now.sh/upload_images/7930379f270d18905002c4d4027199396523969ccf35f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7930379f270d18905002c4d4027199396523969ccf35f.png?mw=700" alt="202310__godot__09-1457--BackgroundArtist-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Background</code> も、 <code>BackgroundArtist</code> にリネームしよう」</p>
<p><a href="https://crieit.now.sh/upload_images/aa5c6b48ab44a197ec691249dc2bf2fa652399a4520b1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/aa5c6b48ab44a197ec691249dc2bf2fa652399a4520b1.png?mw=700" alt="202310__godot__09-1510--LocationCoordinator-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Scenes</code> も、 <code>LocationCoordinator</code> にリネームしよう」</p>
<p><a href="https://crieit.now.sh/upload_images/7eb4b8b43579cc744e9e348b2947b76065239b4790e41.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7eb4b8b43579cc744e9e348b2947b76065239b4790e41.png?mw=700" alt="202310__godot__09-1517--Windows-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ウィンドウって 誰の仕事なんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 誰なんだろな?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 マシ―ナリー(machinery;機械装置)なんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ウィンドウは、わたしの思っている機械と違う」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 <code>スクウェアエニックス 中途採用 ゲーム開発</code> で検索。<br />
どんな職種があるか 調べたろ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.jp.square-enix.com/recruit/career/career/de/game/index.html">募集中の職種</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>UI デザイナー</code> と、 <code>UI アーティスト</code> は何が違うんだぜ? 表記ゆれ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 デザイナーと アーティストの違いが さっぱり分からん。<br />
実態は どう違うんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 アーティストは 自分勝手なやつで、<br />
デザイナーは 顧客が思っていた本当に欲しかったものとは違うものを作ってくる勝手なやつじゃないのか?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 だから 違いが分からん」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👇 調べましょう」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://niigatainsatsu.co.jp/topics/20221109/">デザイナーとアーティストの違いって? 実は存在目的が明確に違うんです!</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 アーティストは その人本人に価値があって それを会社側が ゲヘヘ と下心をこめて利用するもので、<br />
デザイナーは 下請けか」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 お父んの頭では それぐらいの理解が 精一杯だな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 あんたは どの役職なら入れそうなの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ゲーム制作は専門技術なんで、それ用の技術を持ってないので どこも無理だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 なんで そんなやつが きふわらべRPG 作ろうとするんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>Designer</code> と <code>Artist</code> だと、 <code>Artist</code> の方が つづりが短いから こっちを採用しよう」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あと <code>UI</code> は意味が広すぎる。 <code>GUI</code> にしよう」</p>
<p><a href="https://crieit.now.sh/upload_images/5365e464f713af4c6da23311c76ccd956523a33435d19.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5365e464f713af4c6da23311c76ccd956523a33435d19.png?mw=700" alt="202310__godot__09-1551--GuiArtist-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 他の職業は 制作の裏方さんという感じなのに、<br />
<code>GuiArtist</code> は 本番中に めっちゃ 働くんだけど」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 実態は ウィンドウだからな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 裏方と オン・エアで 大分類を切った方がベターなのかしらねえ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そこは あとで考えよう」</p>
<p><a href="https://crieit.now.sh/upload_images/f4a1bde6ddef7a8f930c28d4701d2a6c6523a44b90b06.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f4a1bde6ddef7a8f930c28d4701d2a6c6523a44b90b06.png?mw=700" alt="202310__godot__09-1556--SecondFolders.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 第2階層は こんな感じでどうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 オンエアが始まる前に仕事が終わってる人たちと、<br />
オンエアに仕事をしてる人たちで 別れるんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 上演中にシナリオを書き換えるシェークスピアみたいなやつとか 分類できないだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ツリー構造には向いてないなあ」</p>
<h1 id="自律するかどうか"><a href="#%E8%87%AA%E5%BE%8B%E3%81%99%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B">自律するかどうか</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 現状の実装では ユーザーがキー入力すると<br />
メッセージ・ウィンドウへ送られ、<br />
台本の次の行が読み込まれ、それに従って さらに動く、<br />
オートマタが 完成しているのが、 一時停止を都合悪くする原因だろう」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <strong>自律</strong> するかどうかより <strong>連続</strong> かどうかが問題だぜ。<br />
連続に 切れ目なんか無いぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 停止した瞬間は どんな状態にあるの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 数学的には 無限の狭間を永遠に彷徨っていて定まらないと思うが、<br />
情報処理的には プログラム・カウンターが止まっているところだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 都合のわるい所、変なところであったとしても、<br />
止まっているノードに対して 編集を行わず、かつ、行う処理が 再開 だけなのであれば<br />
問題は起こらないと思うぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 それを保証する仕組みが あるかどうか分からん」</p>
<h1 id="状態を持つものと、持たないもの"><a href="#%E7%8A%B6%E6%85%8B%E3%82%92%E6%8C%81%E3%81%A4%E3%82%82%E3%81%AE%E3%81%A8%E3%80%81%E6%8C%81%E3%81%9F%E3%81%AA%E3%81%84%E3%82%82%E3%81%AE">状態を持つものと、持たないもの</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 状態を持つものと、持たないものがあるのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そうそう」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Godot の GUI の思想が中途半端なんだぜ。<br />
位置情報のような固定できる設定と、<br />
メッセージ表示のような ランタイム時に状態を持つ設定が 分かれていない」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 今どきのエディター、ほとんどの素材が ダイナミックだしな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ラベルなどのコントロールは <code>CanvasLayer</code> の下に管理される前提よね」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 入力系や 自律的な系は <code>Director</code> と <code>AssistantDirector</code> に抑えさせよう。<br />
他は 指示待ちで」</p>
<h1 id="階層は浅く"><a href="#%E9%9A%8E%E5%B1%A4%E3%81%AF%E6%B5%85%E3%81%8F">階層は浅く</a></h1>
<p><a href="https://crieit.now.sh/upload_images/a5d6a6b6d27e404e9db6e6d2259933886523b00f1f34a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a5d6a6b6d27e404e9db6e6d2259933886523b00f1f34a.png?mw=700" alt="202310__godot__09-1645--GuiArtistFolder-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👆 <code>GuiArtist</code> のフォルダーが深くて 開けるのが手間よ」</p>
<p><a href="https://crieit.now.sh/upload_images/8c4550e44c680a04dcb4dfeaf1a573d46523b30f7ca1c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8c4550e44c680a04dcb4dfeaf1a573d46523b30f7ca1c.png?mw=700" alt="202310__godot__09-1659--GuiArtistFolderToShallow-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 少し浅くしたぜ」</p>
<h1 id="時間軸で勝手に動いているもののうち、邪魔なものは止めろだぜ"><a href="#%E6%99%82%E9%96%93%E8%BB%B8%E3%81%A7%E5%8B%9D%E6%89%8B%E3%81%AB%E5%8B%95%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AE%E3%81%86%E3%81%A1%E3%80%81%E9%82%AA%E9%AD%94%E3%81%AA%E3%82%82%E3%81%AE%E3%81%AF%E6%AD%A2%E3%82%81%E3%82%8D%E3%81%A0%E3%81%9C">時間軸で勝手に動いているもののうち、邪魔なものは止めろだぜ</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 何を pause すればいいのか分かってきた……、<br />
入力は一元的に抑え、<br />
時間軸で勝手に動いているもののうち、邪魔なものを止めればいいんだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 今の実装だと ブリンカー ぐらいねえ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 停止する世界と 停止しない世界 が共存していえ、<br />
デッドロックしない仕組みを どう実現しているのか 分からないが……」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 容赦なくデッドロックするんだぜ。<br />
勝手に上手く停止させろよ、という方針なのだろうなんだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 パイトニックだな……」</p>
<h1 id="全部止まった"><a href="#%E5%85%A8%E9%83%A8%E6%AD%A2%E3%81%BE%E3%81%A3%E3%81%9F">全部止まった</a></h1>
<pre><code class="gd">$"GuiArtist".get_tree().paused = true
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ウィンドウだけ止めようと思って <code>.get_tree().paused = true</code> したら、音楽も止まった……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 サブ・ツリーだけ 止められないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 <code>.get_tree().paused</code> は、ゲーム全体を止めるものらしいぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://2dgames.jp/godot-pause-set_process/">【Godot】オブジェクトを一時停止する方法</a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 思ってたものと違うな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>.set_process(false)</code> を使うと、 <code>_process(delta)</code> が呼び出されなくなるそうよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 使ってみるか……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 メソッドを呼び出したノードだけ一時停止して、その子ノードは一時停止しない……」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 子ノードまで再帰的に止めるオプションは無いのかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 無いぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/classes/class_node.html#class-node-method-set-process">GODOT DOCS / set_process</a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 じゃあ メソッドを自作ねえ」</p>
<h1 id="ノード毎にメソッドを自作"><a href="#%E3%83%8E%E3%83%BC%E3%83%89%E6%AF%8E%E3%81%AB%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E8%87%AA%E4%BD%9C">ノード毎にメソッドを自作</a></h1>
<p><a href="https://crieit.now.sh/upload_images/57cf4ec169a0644d2a96135de092a11765243e8a2304a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/57cf4ec169a0644d2a96135de092a11765243e8a2304a.png?mw=700" alt="202310__godot__10-0254--PauseSubtree.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 この書き方 かっこよくね?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ちゃんと動くのかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/dbce999d709a36e7a807a0297719db1a652440e3bc345.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dbce999d709a36e7a807a0297719db1a652440e3bc345.png?mw=700" alt="202310__godot__10-0304--ProcessSubtree.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 Godot の習慣に合わせると、こっちの 書き方の方がいいか?」</p>
<h2 id="ノードが自作のメソッドを持っているか確認"><a href="#%E3%83%8E%E3%83%BC%E3%83%89%E3%81%8C%E8%87%AA%E4%BD%9C%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D">ノードが自作のメソッドを持っているか確認</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 ダック・タイピング できるのか」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://ask.godotengine.org/116004/how-to-check-have-the-node-a-custom-function">How to check have the node a custom function?</a></p>
<pre><code class="gd"># サブツリーの is_process を設定。ポーズ(Pause;一時停止)の逆の操作
func set_process_subtree(is_process):
print("[テキストブロック] プロセッシング:" + str(is_process))
# 処理しろ (true) という指示のとき、処理していれば (true) 、何もしない(pass)。
# 処理するな(false)という指示のとき、処理していれば (true) 、停止する (false)。
# 処理しろ (true) という指示のとき、処理していなければ(false)、再開する (true)。
# 処理するな(false)という指示のとき、処理していなければ(false)、何もしない(pass)
if is_process != self.is_processing():
self.set_process(is_process)
# 子ノード
for child in self.get_children():
if child.has_method("set_process_subtree"):
child.set_process_subtree(is_process)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 これを 各ノードのスクリプトに貼り付けていけば良さげ、めんどくせ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 ポーズ・ボタンを実装したぜ」 </p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1711452292531314946?s=20">動画</a></p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18607
2023-10-09T02:11:27+09:00
2023-10-09T03:18:58+09:00
https://crieit.net/posts/Godot-6522e2bf69161
Godot で実行ファイルを作ろうぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 Godot で実行ファイルを作る方法 知らないな 調べるか……」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/tutorials/export/exporting_projects.html">GODOT DOCS / プロジェクトのエクスポート</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 説明読んでも 分からんな……、 手を動かしてれば 分かるか」</p>
<p><a href="https://crieit.now.sh/upload_images/bb5dfe17e362e4e61da52f354896a7016522ddbdb8ebc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bb5dfe17e362e4e61da52f354896a7016522ddbdb8ebc.png?mw=700" alt="202310__godot__09-0148--Export-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/571f19180c729c3e3b7d89c39063302f6522df8c51e51.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/571f19180c729c3e3b7d89c39063302f6522df8c51e51.png?mw=700" alt="202310__godot__09-0156--Add.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/f163e28d42a3e4afeda978e01845a5c96522dfd515675.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f163e28d42a3e4afeda978e01845a5c96522dfd515675.png?mw=700" alt="202310__godot__09-0158--WindowsDesktop.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Windows Desktop</code> を選ぶとエラーだらけ……、 <code>PCK/Zipのエクスポート</code> ボタンを押してみるか……<br />
何していいか分からん」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>エクスポートテンプレートの管理</code> リンクをクリックしてみるかだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/bde72634b0d75e13989df85bc36fa1536522e096b2c4c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bde72634b0d75e13989df85bc36fa1536522e096b2c4c.png?mw=700" alt="202310__godot__09-0201--ExportTemplate.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 適当にいじってみるか…… <code>ダウンロードしてインストール</code> ボタンを押してみよう」</p>
<p><a href="https://crieit.now.sh/upload_images/b23c13441c76c299515c9994b924ad0c6522e14abc165.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b23c13441c76c299515c9994b924ad0c6522e14abc165.png?mw=700" alt="202310__godot__09-0204--DownloadInstall.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 インストールできたのかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/f710b55bc141473b3c6cfa1b3a0697da6522e1a8aaa2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f710b55bc141473b3c6cfa1b3a0697da6522e1a8aaa2c.png?mw=700" alt="202310__godot__09-0206--ProjectExport-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <strong>プロジェクトのエクスポート</strong> ボタンを押せるようになったぜ」</p>
<h1 id="エラーが出た"><a href="#%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%81%9F">エラーが出た</a></h1>
<p><a href="https://crieit.now.sh/upload_images/ee022a967bf29e537903aea4bf5f9e0f6522e22206843.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ee022a967bf29e537903aea4bf5f9e0f6522e22206843.png?mw=700" alt="202310__godot__09-0208--Error.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 エラーが出たぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 どんなエラーか調べるか…… メッセージをコピーできねー クソだな」</p>
<pre><code class="plaintext">Could not start rcedit executable. Configure rcedit path in the Editor Settings (Export > Windows > rcedit), or disable "Application > Modify Resources" in the export preset.
</code></pre>
<h1 id="実行ファイル自体はでけた"><a href="#%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%87%AA%E4%BD%93%E3%81%AF%E3%81%A7%E3%81%91%E3%81%9F">実行ファイル自体はでけた</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 実行ファイルはできてたぜ」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1711069507748565189?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 これを配布できるかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/10243507d7e4979ec0f5882e9863ba096522e9e1252a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/10243507d7e4979ec0f5882e9863ba096522e9e1252a6.png?mw=700" alt="202310__godot__09-0241--PckFile.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>.pck</code> ファイルも一緒に同梱しないといけないのか、勉強になったな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 取り扱い説明書も 必要じゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 簡単ながら書いた」</p>
<h1 id="配ってみた"><a href="#%E9%85%8D%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F">配ってみた</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 ここからダウンロードできるはずだぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/godot-practice/releases/tag/20231009_0256">実行ファイル</a></p>
<p><a href="https://crieit.now.sh/upload_images/c67cf4918d3ae565e68f784ba62a7bbe6522f26a26fcf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c67cf4918d3ae565e68f784ba62a7bbe6522f26a26fcf.png?mw=700" alt="202310__godot__09-0317--Exe.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 中身はこんな感じ」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18606
2023-10-09T01:14:31+09:00
2023-10-09T01:20:22+09:00
https://crieit.net/posts/Godot-BGM-6522d567addce
Godot で BGM をループするようにしてくれだぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot で BGM をループさせる方法が分からん 調べるか……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 Godot 3 での説明は たくさんある」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=Elgb6FOFMYo">How to loop music - Godot 3 tutorial</a></p>
<p><a href="https://crieit.now.sh/upload_images/73c29d9f8778cfcb338470ddb2cccd0c6522d32fd1354.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/73c29d9f8778cfcb338470ddb2cccd0c6522d32fd1354.png?mw=700" alt="202310__godot__09-0104--BGMLoop-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 あれっ! <strong>インポート</strong> なんていうタブがあるぜ!」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ループをチェックして 再インポート してみたぜ」</p>
<h1 id="視聴はできないのかだぜ?"><a href="#%E8%A6%96%E8%81%B4%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%E3%81%A0%E3%81%9C%EF%BC%9F">視聴はできないのかだぜ?</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 BGM とか効果音とか、視聴するボタンは無いのかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 調べるか……」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://ore2wakaru2.hatenablog.com/entry/2018/05/23/235919">Godot 音シュー02「BGMを鳴らす」</a></p>
<p><a href="https://crieit.now.sh/upload_images/e78c175904ce1453d69b9d4725c098386522d531f1c57.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e78c175904ce1453d69b9d4725c098386522d531f1c57.png?mw=700" alt="202310__godot__09-0112--Play-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <strong>Playing</strong> チェックボックスを On にしたら 視聴でけた……」</p>
<h1 id="ファイルをダブルクリックすると便利そうなものが"><a href="#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%83%80%E3%83%96%E3%83%AB%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%81%A8%E4%BE%BF%E5%88%A9%E3%81%9D%E3%81%86%E3%81%AA%E3%82%82%E3%81%AE%E3%81%8C">ファイルをダブルクリックすると便利そうなものが</a></h1>
<p><a href="https://crieit.now.sh/upload_images/ffdb15a43758e2bfe51ccdb445fdb5206522d68461b61.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ffdb15a43758e2bfe51ccdb445fdb5206522d68461b61.png?mw=700" alt="202310__godot__09-0117--DoubleClick.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 疲れから 単に <code>.ogg</code> ファイルを誤ってダブル・クリックしたら 便利そうなウィンドウが出てきた。<br />
こんな隠し機能は やめてほしい」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18605
2023-10-08T14:31:14+09:00
2023-10-15T18:42:07+09:00
https://crieit.net/posts/Godot-65223ea29da40
Godot でサブウィンドウを作ろうぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/6e36f8727b498ea5e35420df34fa34506522362159cce.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e36f8727b498ea5e35420df34fa34506522362159cce.png?mw=700" alt="202310__godot__08-1349-Windows-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ウィンドウが 増えてきそうなので、<br />
ツリー階層を 再編したいというところだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 とりあえず 既存の分は やってしまえば?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
(カタ カタ カタ カタ)</p>
<p><a href="https://crieit.now.sh/upload_images/48ea5e7cc40fde214fdf5d29506b157865223e69917ac.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/48ea5e7cc40fde214fdf5d29506b157865223e69917ac.png?mw=700" alt="202310__godot__08-1429-WindowsRestructure-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ひとまず 既存の分を移動したぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 じゃあ どっちも ウィンドウなのだから スクリプトは共通化できるはずなのよ。<br />
<code>メッセージ</code> と <code>センター</code> のスクリプトは何が違うの?」</p>
<p>📄 <code>Director/Windows/メッセージ</code>:</p>
<pre><code class="gd"># メッセージ・ウィンドウ(Message Window)
extends Node2D
# 状態遷移機械
var statemachine = load("scripts/MessageWindowStatemachine.gd").new()
# メッセージ・ウィンドウを閉じる
func initialize():
$"TextBlock".initialize()
self.statemachine.all_page_flushed()
# ウィンドウを空っぽにして、次の指示を待ちます
func clear_and_awaiting_order():
print("[メッセージ・ウィンドウ] ウィンドウを空っぽにして、次の指示を待ちます")
$"TextBlock".text = ""
# メッセージウィンドウは指示待ちだ
$"../../AssistantDirector".is_message_window_waiting_for_order = true
# 先頭行と、それ以外に分けます
func split_head_line_or_tail(text):
# 最初の改行を見つける
var index = text.find("\n")
var head = text.substr(0, index)
var tail = text.substr(index+1, text.length() - (index+1))
# print("[メッセージ・ウィンドウ] head: [" + head + "]")
# print("[メッセージ・ウィンドウ] tail: [" + tail + "]")
return [head, tail]
# メッセージを追加
func push_message(text):
# print("[メッセージ・ウィンドウ] 台詞追加")
print("[メッセージ・ウィンドウ] 台詞: [" + text + "]")
$"TextBlock".push_message(text)
# 表示
self.visible = true
# タイプライター風表示へ状態遷移
self.statemachine.scenario_seted()
# 選択肢を追加
func push_choices(row_numbers, text):
print("[メッセージ・ウィンドウ] 選択肢: [" + text + "]")
$"TextBlock".push_choices(row_numbers, text)
# 表示
self.visible = true
# タイプライター風表示へ状態遷移
self.statemachine.scenario_seted()
# ページ送り
func on_page_forward():
# 効果音
$"../../Musician".playSe("ページめくり音")
# ブリンカーを消す
$"TextBlock".clear_blinker()
# ウィンドウを空っぽにして、次の指示を待ちます
self.clear_and_awaiting_order()
# 下位ノードで選択肢が選ばれたとき、その行番号が渡されてくる
func on_choice_selected():
# カーソル音
$"../../Musician".playSe("選択肢確定音")
var row_number = $"TextBlock/ChoiceCursor".selected_row_number
print("[メッセージ・ウィンドウ] 選んだ選択肢行番号:" + str(row_number))
# 選択肢の行番号を、上位ノードへエスカレーションします
$"../../AssistantDirector".on_choice_selected(row_number)
# サブツリーが全てインスタンス化されたときに呼び出される
func _ready():
# ステートマシーンを、子にも参照させる
$"Background".statemachine = self.statemachine
$"TextBlock".statemachine = self.statemachine
$"TextBlock/BlinkerTriangle".statemachine = self.statemachine
$"TextBlock/BlinkerUnderscore".statemachine = self.statemachine
$"TextBlock/ChoiceCursor".statemachine = self.statemachine
# ウィンドウを空っぽにする
$"TextBlock".text = ""
# テキストボックスなどにフォーカスが無いときの入力を拾う
func _unhandled_key_input(event):
# 完全表示中
if self.statemachine.is_completed():
# 選択肢モードなら
if $"TextBlock".is_choice_mode:
# 何かキーを押したとき
if event.is_pressed():
# 確定ボタン以外は無効
if event.keycode != KEY_ENTER:
# print("[メッセージ・ウィンドウ] 選択肢モードでは、エンターキー以外ではメッセージ送りしません")
return
else:
# 選択肢を確定した
self.on_choice_selected()
return
# それ以外なら
else:
# 何かキーを押したとき
if event.is_pressed():
if event.keycode == KEY_R:
# print("[メッセージ・ウィンドウ] Rキーは、メッセージの早送りに使うので、メッセージ送りしません")
return
# ページ送り
self.on_page_forward()
</code></pre>
<p>📄 <code>Director/Windows/センター</code>:</p>
<pre><code class="gd"># センター・ウィンドウ(Center Window;中央窓)
extends Node2D
# 現在表示中のセンターウィンドウ画像のノード名
var current_name = null
# ウィンドウを表示する
func show_window(name):
print("[センター・ウィンドウ] 表示:[" + name + "]")
# 既に表示中の画像を非表示にする(上に乗っかっていて、表示したい絵が見えないケースがある)
if self.current_name != null:
self.get_node(self.current_name).hide()
self.current_name = name
self.show()
self.get_node(self.current_name).show()
$"System".show()
$"System/Frame".show()
# ウィンドウを非表示にする
func hide_window():
if self.current_name == null:
return
print("[センター・ウィンドウ] 非表示:[" + str(self.current_name) + "]")
self.get_node(self.current_name).hide()
$"System/Frame".hide()
self.current_name = null
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 そら、メッセージ・ウィンドウには<br />
メッセージ表示をコントロールするスクリプトが書いてるよな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 そういえば メッセージ・ウィンドウの背景は 半透明の黒で、<br />
センター・ウィンドウの背景は 画像 という違いもあるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 半透明の黒も 窓から切り離して 背景画像という扱いにしたらいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 メッセージ・ウィンドウ用の画像と、センター・ウィンドウ用の画像は 縦横のサイズが違う」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 じゃあ 画像ファイルは、サイズ別のフォルダーに入れることにしましょう」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 直交性を考えると ウィンドウ名別のフォルダーにした方が 記述が簡潔になるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Godot のツリー構造と、ファイルシステムのツリー構造に 依存性があると不利だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あっ そうか~」</p>
<p><a href="https://crieit.now.sh/upload_images/dacb939b7b185ea252519675012a0234652247c08bcf9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dacb939b7b185ea252519675012a0234652247c08bcf9.png?mw=700" alt="202310__godot__08-1450-ImageFolderRestructure-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ひとまず サイズ別のフォルダーを採用だぜ」</p>
<h2 id="静的なウィンドウ"><a href="#%E9%9D%99%E7%9A%84%E3%81%AA%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6">静的なウィンドウ</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ゲームプログラムの観点から言うと 自由自在なウィンドウが欲しいような<br />
設計の固まってない状態が いつまでも続いて 進捗が進んでたら 良くないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 それはそうだが……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 試しに ゲームを終了するための システム・メニューを設計してみればいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/fbf2790ae772628dc66d62bc6b614e5e65224fab7add1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fbf2790ae772628dc66d62bc6b614e5e65224fab7add1.png?mw=700" alt="202310__godot__08-1532-Schetch-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 グリッドに合わさないと サイズ感は 分からないものだ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 そんな小さなウィンドウでは 英語が入らないだろう。<br />
ローカライズして大丈夫か?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 間に合わないんで ローカライズで」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 半透明の黒い所は RGBAが 32, 32, 32, 192 か。 192 は、百分率の 75% でもいいことにしよう」</p>
<p><a href="https://crieit.now.sh/upload_images/b0b94a959b4c1e002f961e2c9123d63065225538cdaa0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b0b94a959b4c1e002f961e2c9123d63065225538cdaa0.png?mw=700" alt="202310__godot__08-1546--SystemMenu.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 位置も サイズも 色も 素材を作る手間がかからないように妥協したぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 画面上に置いてみましょう」</p>
<h2 id="名前を変更"><a href="#%E5%90%8D%E5%89%8D%E3%82%92%E5%A4%89%E6%9B%B4">名前を変更</a></h2>
<p><a href="https://crieit.now.sh/upload_images/499105cd0666650490d7eaba5525579365225b5a23727.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/499105cd0666650490d7eaba5525579365225b5a23727.png?mw=700" alt="202310__godot__08-1633-CenterMessageWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 分かった。名前が悪いんだ。名前を変えよう。<br />
こいつは システム・ウィンドウ ではなくて、<br />
<strong>中央メッセージ・ウィンドウ</strong> だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/5a7dac3bf1902219aa7cd8de87921f9765225bf0cb426.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5a7dac3bf1902219aa7cd8de87921f9765225bf0cb426.png?mw=700" alt="202310__godot__08-1635-BottomMessageWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こいつは <strong>下メッセージ・ウィンドウ</strong> だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/a116fef9722b7b5c736bc5aeac6e6c5565225e80b5997.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a116fef9722b7b5c736bc5aeac6e6c5565225e80b5997.png?mw=700" alt="202310__godot__08-1646-CenterViewingWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こいつは <strong>中央ビューイング・ウィンドウ</strong> だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 別物と割り切ったわけだな 実践的だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/fe45beebc8776503cf54d52917f31b34652262102a0aa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fe45beebc8776503cf54d52917f31b34652262102a0aa.png?mw=700" alt="202310__godot__08-1659-Msg-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 どのメッセージ・ウィンドウを使うか指定できるようにしようぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 状態を持っていいいの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そこは ごめんなさい しようぜ?」</p>
<h2 id="位置合わせ"><a href="#%E4%BD%8D%E7%BD%AE%E5%90%88%E3%82%8F%E3%81%9B">位置合わせ</a></h2>
<p><a href="https://crieit.now.sh/upload_images/b1f6b32e51fca68ab4250d4cd5cbe599652267a38d355.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b1f6b32e51fca68ab4250d4cd5cbe599652267a38d355.png?mw=700" alt="202310__godot__08-1725-Center-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 テキストの表示位置をどうするか。 Godot の思想だと コピー貼り付けして 座標変えて……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 コピー貼り付けするしか ないんじゃない? 動的にやったら レイアウトの機能の利便性を損なうんだし」</p>
<p><a href="https://crieit.now.sh/upload_images/f2e7b8be72a714ce4264e639ba0dabe965228ac5bd523.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f2e7b8be72a714ce4264e639ba0dabe965228ac5bd523.png?mw=700" alt="202310__godot__08-1955-Copy-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 同じものが コピーされて DRYの法則が破れているように見えるが、<br />
座標位置を覚えておくデータだから 残しておいた方が エディターが活きるのか~」</p>
<p><a href="https://crieit.now.sh/upload_images/320be789987f88a7396e99f3a1fbb72e6522a9bf8189f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/320be789987f88a7396e99f3a1fbb72e6522a9bf8189f.png?mw=700" alt="202310__godot__08-2207--CenterMessageWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 文字数を調整しないと<br />
CSSチョットワカル みたいになるんだな」</p>
<h1 id="進行"><a href="#%E9%80%B2%E8%A1%8C">進行</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ゲームの進行を止めて、システム・メニューを出すんだっけ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 そうだぜ」</p>
<pre><code class="plaintext"> 📂 Director
├── 📂 Main
└── 📂 SystemMenu
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 じゃあ 大きく2つに分かれないかだぜ?」</p>
<pre><code class="plaintext"> 📂 Director
├── 📂 Main
├── 📂 SystemMenu
👉 └── 📂 Musician
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👆 ミュージシャンは 別れなくてよくない?」</p>
<pre><code class="plaintext"> 📂 Director
👉 └── 📂 ScenarioBook
├── Main
└── SystemMenu
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 じゃあ 分かれるのは シナリオブックだ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 大改造すると 時間が無くなってしまうから、今回は 分けずに行こうぜ?」</p>
<h1 id="エスケープ・キー"><a href="#%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97%E3%83%BB%E3%82%AD%E3%83%BC">エスケープ・キー</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 エスケープ・キーを押したら メニューが出るようにするにしても、<br />
メッセージ・ウィンドウが出てないときにも メニューは出したいから、<br />
キー・イベントを取得するのは メッセージ・ウィンドウより 上位のノードだよな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ルートで キー判定すりゃ よくない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 メッセージ・ウィンドウが出てるときは キーが反応しないな。<br />
<code>func _unhandled_key_input(event):</code> を2か所で使うとか よくないのか?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ルートで全部取って、必要なら 子ノードに配るようにしたらどうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 それもまた 大改造だな……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 子ノードが先に <code>_unhandled_key_input()</code> をキャッチするのか?<br />
後ろ向き探索?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 いや、会話イベント中に エスケープ・キー を押して システム・メニューを出そうなんてのが<br />
間違いなんだぜ」</p>
<h1 id="会話じゃないシーン"><a href="#%E4%BC%9A%E8%A9%B1%E3%81%98%E3%82%83%E3%81%AA%E3%81%84%E3%82%B7%E3%83%BC%E3%83%B3">会話じゃないシーン</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 しかし 現在の設計では 会話シーンしかない。<br />
マップの上を移動するような シーンや、 アドベンチャーのようなメニューの並んだシーンがない」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 会話が途切れることなく連続しちゃ ダメ なんだ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 じゃあ マップ画面を挟んだらいいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 1~2時間かけて、1枚 絵を追加するか~」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/727284379295207425?s=20">ツイート</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こういうマップだろ」</p>
<h1 id="Z-index のルール分からん"><a href="#Z-index+%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%AB%E5%88%86%E3%81%8B%E3%82%89%E3%82%93">Z-index のルール分からん</a></h1>
<p><a href="https://crieit.now.sh/upload_images/057f3c888d4c86157e6f9bccf9bd84246522c49f288ed.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/057f3c888d4c86157e6f9bccf9bd84246522c49f288ed.png?mw=700" alt="202310__godot__09-0001--ZIndex.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 Z-index で前景、後景の調整ができない…… 分けわからん……」</p>
<h1 id="導線を中断するのが 難しい"><a href="#%E5%B0%8E%E7%B7%9A%E3%82%92%E4%B8%AD%E6%96%AD%E3%81%99%E3%82%8B%E3%81%AE%E3%81%8C%E3%80%80%E9%9B%A3%E3%81%97%E3%81%84">導線を中断するのが 難しい</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 サブ・ウィンドウが どうのこうのより<br />
メインで ゲームが進行していて それを 停止させるのが難しい」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>_process()</code> で動かしてるんだから 嚙み合わせを外したらいいじゃない」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 それを1個1個 仕込んでいくのが大変だ。 いったん休憩するぜ」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="📅 (2023-10-10 tue) 再開"><a href="#%F0%9F%93%85+%282023-10-10+tue%29+%E5%86%8D%E9%96%8B">📅 (2023-10-10 tue) 再開</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 エスケープ・キーを押したら 一時停止する機能は実装してきたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ ついでに 現在表示しているメッセージ・ウィンドウも非表示にしてくれだぜ」</p>
<pre><code class="gd"># サブツリーの visible を設定
func set_visible_subtree(is_visible):
print("[チョイス・カーソル] 可視性:" + str(is_visible))
# 見せろ(true) という指示のとき、見えてれば(true) 、何もしない(pass)。
# 隠せ (false)という指示のとき、見えてれば(true) 、隠す (false)。
# 見せろ(true) という指示のとき、隠れてれば(false)、見せる (true)。
# 隠せ (false)という指示のとき、隠れてれば(false)、何もしない(pass)
if is_visible != self.visible:
self.visible = is_visible
# 子ノード
for child in self.get_children():
if child.has_method("set_visible_subtree"):
child.set_visible_subtree(is_visible)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じのメソッドを ノードに持たせていくかだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/1792fd6fef152781225792a8aeeff1d8652555429b1c4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1792fd6fef152781225792a8aeeff1d8652555429b1c4.png?mw=700" alt="202310__godot__10-2243--ElaseWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 背景を残して、それ以外を非表示にしたぜ」</p>
<h2 id="中央メッセージ・ウィンドウを表示してくれだぜ"><a href="#%E4%B8%AD%E5%A4%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%83%BB%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">中央メッセージ・ウィンドウを表示してくれだぜ</a></h2>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 続けて 中央メッセージ・ウィンドウを表示してくれだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 前に <code>cwnd</code> って命令を作ってたよな。あれを <code>v-wnd</code> に名前を変えようかな」</p>
<p><a href="https://crieit.now.sh/upload_images/b41f755f324be679a46c649ad0c5f74865255dd17107b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b41f755f324be679a46c649ad0c5f74865255dd17107b.png?mw=700" alt="202310__godot__10-2320--ViewingWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 あっ、これは ビューイング・ウィンドウだ。間違えた」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 前に <code>msg</code> って命令を作ってたよな。あれを <code>m-wnd</code> に名前を変えようぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/51a1a746aa2f8898769d86bea1640fa265256225aea3b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/51a1a746aa2f8898769d86bea1640fa265256225aea3b.png?mw=700" alt="202310__godot__10-2338--CenterMessageWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ そこに 選択肢を表示してくれだぜ。 再開と 続行でいいかな」</p>
<p><a href="https://crieit.now.sh/upload_images/644f88be50b6e0f152a5367ca49d38ce6525661ae4648.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/644f88be50b6e0f152a5367ca49d38ce6525661ae4648.png?mw=700" alt="202310__godot__10-2355--Choice.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 枠のサイズが なんか余ったな」</p>
<h2 id="復帰処理"><a href="#%E5%BE%A9%E5%B8%B0%E5%87%A6%E7%90%86">復帰処理</a></h2>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ そこで エスケープ・キーを押したら 元の状態に戻してくれだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 元の状態を保存してないから 難しいなあ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 何を消したか 覚えておくしかなくない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 それか、何も消さず 背景の後ろに隠しておくかだな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Godot での <code>z-index</code> の処理は 分けが分からないのではなかったか?」</p>
<h1 id="📅 (2023-10-11 wed) 再開"><a href="#%F0%9F%93%85+%282023-10-11+wed%29+%E5%86%8D%E9%96%8B">📅 (2023-10-11 wed) 再開</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Visual Novel パートと System Menu パートを分けるべきか、<br />
パートという呼称は 適切か?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 コンポーネントなんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 班なら グループ(Group)だが」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ゲームは どれだけの画面で構成される?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 画面なら スクリーン(Screen)とか シーン(Scene)かな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>Scene</code> は Godot に用語を取られたから使いたくない」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 セッションでどう?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ビジュアル・ノベル・セッション、 バトル・セッション、 メニュー・セッション……、<br />
良い案だぜ 今んとこ候補」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 セパレーション(Separation;離別)は どうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 意味は適切だが」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 用語として 他の単語と絡みにくいのよね」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ビジュアル・ノベル・セパレーション、 バトル・セパレーション、 メニュー・セパレーション……、<br />
おかしいか。どうすれば?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 デパートメント(Department;部)で いいんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 それだぜ!<br />
ビジュアル・ノベル・デパートメント、 バトル・デパートメント、 システム・メニュー・デパートメント、<br />
これで行こう」</p>
<h2 id="ビジュアル・ノベル・デパートメント"><a href="#%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%BB%E3%83%8E%E3%83%99%E3%83%AB%E3%83%BB%E3%83%87%E3%83%91%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88">ビジュアル・ノベル・デパートメント</a></h2>
<p><a href="https://crieit.now.sh/upload_images/090f9c7aa2ca6206b751cd8f9b06551e652685a853463.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/090f9c7aa2ca6206b751cd8f9b06551e652685a853463.png?mw=700" alt="202310__godot__11-2022--VisualNovelDepartment-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 シナリオを書くというのは、<br />
<code>VisualNovelDepartment</code> のスナップショットを変更することだと、<br />
そういう概念にしてしまおう」</p>
<p><a href="https://crieit.now.sh/upload_images/182126091be3bef4a6aae6db55fa2d4d65268ef701a32.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/182126091be3bef4a6aae6db55fa2d4d65268ef701a32.png?mw=700" alt="202310__godot__11-2102--VisualNovelDepartment-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 スナップショットではない ビジュアル・ノベル部 も作っておこう」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ファイル名を間違えそうだ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ロケーションの名前も デパートメント毎に覚えておく必要があるか」</p>
<h2 id="タイプライターで表示途中の文"><a href="#%E3%82%BF%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%82%BF%E3%83%BC%E3%81%A7%E8%A1%A8%E7%A4%BA%E9%80%94%E4%B8%AD%E3%81%AE%E6%96%87">タイプライターで表示途中の文</a></h2>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 タイプライターで表示途中の文も 覚えておけだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 なんで こんなに難しいのだろう?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 スナップショットは グローバル変数のように 変数を持っておきたくて、<br />
オブジェクト指向のカプセル化とは 反するんだが、<br />
データを1か所で管理したいときは オブジェクト指向じゃない方がいいんだ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 テキストブロックが タイプライター表示をしていて<br />
文字列を切り分けたりしているが、この機能は デパートメント の方に持たせたい」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 また 次の日ねえ」</p>
<h1 id="📅 (2023-10-12 thu 20:12) 再開"><a href="#%F0%9F%93%85+%282023-10-12+thu+20%3A12%29+%E5%86%8D%E9%96%8B">📅 (2023-10-12 thu 20:12) 再開</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 テキストブロックを見るか」</p>
<pre><code class="gd"># メッセージを追加
func push_message(new_text):
# print("[テキストブロック] 台詞追加")
print("[テキストブロック] 台詞: [" + new_text + "]")
self.get_snapshot("VisualNovelDepartment").is_choice_mode = false
self.get_snapshot("VisualNovelDepartment").choice_row_numbers = []
self.get_snapshot("VisualNovelDepartment").text_block_buffer = new_text
# 空欄化
self.emptize()
# 選択肢を追加
func push_choices(row_numbers, new_text):
print("[テキストブロック] 選択肢: [" + new_text + "]")
self.get_snapshot("VisualNovelDepartment").choice_row_numbers = row_numbers
self.get_snapshot("VisualNovelDepartment").text_block_buffer = new_text
self.get_snapshot("VisualNovelDepartment").is_choice_mode = true
# 空欄化
self.emptize()
# さらに、ブリンカーは無いことにする
$"BlinkerTriangle".initialize()
$"BlinkerUnderscore".initialize()
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 通常のメッセージと、選択肢でメソッドが分かれているの、<br />
改造の邪魔なんで 1本化したいぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 前処理として <code>.setup_normal_mode()</code> と、 <code>.setup_choices_mode()</code> を作ったら?」</p>
<pre><code class="gd"># メッセージを追加
func push_message(new_text, choice_row_numbers = null):
# テキスト設定
self.get_snapshot("VisualNovelDepartment").text_block_buffer = new_text
# 空欄化
self.emptize()
# 選択肢なら
if choice_row_numbers != null:
print("[テキストブロック] 選択肢: [" + new_text + "]")
self.get_snapshot("VisualNovelDepartment").is_choice_mode = true
self.get_snapshot("VisualNovelDepartment").choice_row_numbers = choice_row_numbers
# メッセージエンド・ブリンカーは無いことにする
$"BlinkerTriangle".initialize()
$"BlinkerUnderscore".initialize()
# それ以外なら
else:
print("[テキストブロック] 台詞: [" + new_text + "]")
self.get_snapshot("VisualNovelDepartment").is_choice_mode = false
self.get_snapshot("VisualNovelDepartment").choice_row_numbers = []
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 関数を増やしたくないんで 1本化するぜ」</p>
<h2 id="元の状態に復元するのが難しい"><a href="#%E5%85%83%E3%81%AE%E7%8A%B6%E6%85%8B%E3%81%AB%E5%BE%A9%E5%85%83%E3%81%99%E3%82%8B%E3%81%AE%E3%81%8C%E9%9B%A3%E3%81%97%E3%81%84">元の状態に復元するのが難しい</a></h2>
<p><a href="https://crieit.now.sh/upload_images/416acb184eb5e46e1066d8a21bd587636527f7b5bf9ff.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/416acb184eb5e46e1066d8a21bd587636527f7b5bf9ff.png?mw=700" alt="202310__godot__12-2241--RestoreToFailed.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 難しい!」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 しかし 不具合の状況はマシになってきたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 部門切り替え時に 下メッセージ・ウィンドウの初期化をやってしまっていて、そのとき透明になってるようだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 初期化するのは 正しいんじゃない? そのあと表示しないのが悪いだけで」</p>
<p><a href="https://crieit.now.sh/upload_images/d15ff0bede22da547e18c5ce28288dc365280838bf7c0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d15ff0bede22da547e18c5ce28288dc365280838bf7c0.png?mw=700" alt="202310__godot__12-2351--Opaque.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 可視性ではなく、不透明性で 見えなくなっていたのだった」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 不具合は 少しずつ マシになってきているぜ」</p>
<h1 id="アクティブ"><a href="#%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96">アクティブ</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot のオブジェクトは、存在しない、という設定にできないのかだぜ? <code>.set_active()</code> みたいな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 不可視だったら 存在しない という取り決めにするしかなくない?」</p>
<h1 id="📅 (2023-10-13 fri 21:21) 再開"><a href="#%F0%9F%93%85+%282023-10-13+fri+21%3A21%29+%E5%86%8D%E9%96%8B">📅 (2023-10-13 fri 21:21) 再開</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 状態機械をガチガチに作ろうぜ?」</p>
<h2 id="スクリプトを統合しよう"><a href="#%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E7%B5%B1%E5%90%88%E3%81%97%E3%82%88%E3%81%86">スクリプトを統合しよう</a></h2>
<p><a href="https://crieit.now.sh/upload_images/51be8f31f2f2d45b13c17b9aa984326d6529376fd274a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/51be8f31f2f2d45b13c17b9aa984326d6529376fd274a.png?mw=700" alt="202310__godot__13-2125--Tree-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 その前に スクリプトの機能分担が 煩雑になってきたので シンプルにしていこうぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/84c71f7298ef5938f040a875bc567df86529511686b3e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/84c71f7298ef5938f040a875bc567df86529511686b3e.png?mw=700" alt="202310__godot__13-2315--MessageWindow-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 統合して 1ファイル減らしたぜ」</p>
<h1 id="セリフと選択肢は別状態か?"><a href="#%E3%82%BB%E3%83%AA%E3%83%95%E3%81%A8%E9%81%B8%E6%8A%9E%E8%82%A2%E3%81%AF%E5%88%A5%E7%8A%B6%E6%85%8B%E3%81%8B%EF%BC%9F">セリフと選択肢は別状態か?</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 台詞は 最後に ▼ が出て、<br />
選択肢は 最後に移動できる ▶ が出るのが 違いなんだよな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 メッセージエンド・ブリンカー(Message-end Blinker※造語)が違うだけか」</p>
<p><a href="https://crieit.now.sh/upload_images/5898073a182d1df22d1883137c85c00f65295c367f8eb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5898073a182d1df22d1883137c85c00f65295c367f8eb.png?mw=700" alt="202310__godot__14-0002--MessageEndBlinker-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ここらへんのスクリプトを 内部的に1種類に統合したいぜ」</p>
<h2 id="メッセージエンド・ブリンカーの状態機械"><a href="#%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%A8%E3%83%B3%E3%83%89%E3%83%BB%E3%83%96%E3%83%AA%E3%83%B3%E3%82%AB%E3%83%BC%E3%81%AE%E7%8A%B6%E6%85%8B%E6%A9%9F%E6%A2%B0">メッセージエンド・ブリンカーの状態機械</a></h2>
<pre><code class="gd"># メッセージエンド・ブリンカー(Message-end Blinker)
extends Node
# 状態遷移図
# ーーーーー
#
# Entry
# +
# |
# |
# +ーーーーーーーーーー>+
# | |
# | | resolved ※解決済み
# | |
# | V
# | +ーーーーーー+
# | | None | ※メッセージエンド・ブリンカーが存在しない唯一の状態
# | +ーー+ーーー+
# | |
# | | worry ※悩む
# | |
# | +ーーーーーー>+
# | | |
# | | V
# | | +ーーーーーーーーー+
# | | | BlinkHere | ※その場で点滅中
# | | +ーー+ーーーーーー+
# | | |
# | | |
# | | ◇ ーーーーーーーーーーーーーーーーーーーーー+
# | | | |
# | | | |
# | | | move ※カーソルを動かす |
# | | | |
# | | V |
# | | +ーーーーーーーーーー+ |
# | | | BlinkMoving | ※点滅しながら |
# | | +ーー+ーーーーーーー+ カーソル移動中 |
# | | | |
# | | | |
# | | | |
# | +ーーーーーーー+ moved ※移動完了 |
# | |
# | |
# | |
# +ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー+
#
enum States {None, BlinkHere, BlinkMoving}
# 状態
var state = States.None
# 関数の変数
var on_resolved = null
var on_worry = null
var on_move = null
var on_moved = null
func is_none():
return self.state == States.None
func is_blink_here():
return self.state == States.BlinkHere
func is_blink_moving():
return self.state == States.BlinkMoving
func resolved():
if on_resolved != null:
on_resolved.call()
print("[メッセージエンド・ブリンカー] 解決済み")
self.state = States.None
func worry():
if on_worry != null:
on_worry.call()
print("[メッセージエンド・ブリンカー] 悩む")
self.state = States.BlinkHere
func move():
if on_move != null:
on_move.call()
print("[メッセージエンド・ブリンカー] カーソルを動かす")
self.state = States.BlinkMoving
func moved():
if on_moved != null:
on_moved.call()
print("[メッセージエンド・ブリンカー] カーソルは移動した")
self.state = States.BlinkHere
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じか」</p>
<h1 id="📅 2023-10-14 sat ⏰ 12:10 再開"><a href="#%F0%9F%93%85+2023-10-14+sat+%E2%8F%B0+12%3A10+%E5%86%8D%E9%96%8B">📅 2023-10-14 sat ⏰ 12:10 再開</a></h1>
<p><a href="https://crieit.now.sh/upload_images/8bca3c27f5411dea0e29d6218949ea9a652a06ac8a4e6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8bca3c27f5411dea0e29d6218949ea9a652a06ac8a4e6.png?mw=700" alt="202310__godot__14-1206--TextBlock-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 スクリプトが分かれてると つらいから 統合するぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 使ってみると 最適が分かってくるな」</p>
<h2 id="ブリンカーの状態機械"><a href="#%E3%83%96%E3%83%AA%E3%83%B3%E3%82%AB%E3%83%BC%E3%81%AE%E7%8A%B6%E6%85%8B%E6%A9%9F%E6%A2%B0">ブリンカーの状態機械</a></h2>
<pre><code class="gd"># ブリンカー(Blinker;点滅するもの)
extends Node
# 状態遷移図
# ーーーーー
#
# Entry
# +
# |
# |
# +ーーーーーーーーーー>+
# | |
# | | switch_off ※スイッチ・オフ
# | |
# | V
# | +ーーーーーー+
# | | None | ※ブリンカーが存在しない唯一の状態
# | +ーー+ーーー+
# | |
# | |
# | | switch_on ※スイッチ・オン
# | |
# | V
# | +ーーーーーーーーーーー+
# | | BrightAtFirst | ※初回はすぐ表示
# | +ーー+ーーーーーーーー+
# | |
# | |
# | +ーーーーーー>+
# | | |
# | | |
# | | ◇ ーーーーーーーーーーーーーーーーーーーーーーーーー+
# | | | |
# | | | |
# | | | turn_off ※時間経過による消灯 |
# | | | |
# | | V |
# | | +ーーーーーー+ |
# | | | Off | ※消える |
# | | +ーー+ーーー+ |
# | | | |
# | | | |
# | | ◇ ーーーーーーーーーーーーーーーーーーーー>+<ーー+
# | | | |
# | | | |
# | | | turn_on ※時間経過による点灯 |
# | | | |
# | | V |
# | | +ーーーーーーー+ |
# | | | Bright | ※灯る |
# | | +ーー+ーーーー+ |
# | | | |
# | | | |
# | | | |
# | +ーーーーーーー+ |
# | |
# | |
# | |
# +ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー+
#
enum States {None, BrightAtFirst, Off, Bright}
# 状態
var state = States.None
# 関数の変数
var on_switched_on = null
var on_switched_off = null
var on_turned_on = null
var on_turned_off = null
func is_none():
return self.state == States.None
func is_bright_at_first():
return self.state == States.BrightAtFirst
func is_off():
return self.state == States.Off
func is_bright():
return self.state == States.Bright
func switch_on():
if on_switched_on != null:
on_switched_on.call()
print("[ブリンカー] スイッチ・オン")
self.state = States.BrightAtFirst
func switch_off():
if on_switched_off != null:
on_switched_off.call()
print("[ブリンカー] スイッチ・オフ")
self.state = States.None
func turn_on():
if on_turned_on != null:
on_turned_on.call()
print("[ブリンカー] 点灯")
self.state = States.Bright
func turn_off():
if on_turned_off != null:
on_turned_off.call()
print("[ブリンカー] 消灯")
self.state = States.Off
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 点滅の状態も機械に」</p>
<p><a href="https://crieit.now.sh/upload_images/f6c0d0ba4f5995d32780e9635324b50f652a3551abf91.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f6c0d0ba4f5995d32780e9635324b50f652a3551abf91.png?mw=700" alt="202310__godot__14-1528--Cursor-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 非表示のウィンドウのカーソルが 見えてる」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot の <code>.show()</code> 、 <code>.hide()</code> メソッドは アホが考えたメソッドなんだ。<br />
わたしが考えた <code>.set_visible_subtree()</code> メソッドを使うことで解決!」</p>
<h2 id="ウィンドウの表示/非表示まででけた"><a href="#%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E8%A1%A8%E7%A4%BA%EF%BC%8F%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%81%BE%E3%81%A7%E3%81%A7%E3%81%91%E3%81%9F">ウィンドウの表示/非表示まででけた</a></h2>
<p><a href="https://crieit.now.sh/upload_images/eab22b8c041d8673816fe13b40f857d5652a41a98db74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eab22b8c041d8673816fe13b40f857d5652a41a98db74.png?mw=700" alt="202310__godot__14-1621--SubWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ウィンドウの表示/非表示まででけた。<br />
中の文章の復元は まだ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 細かくやってくしかないわねえ」</p>
<h1 id="📅 2023-10-15 sun"><a href="#%F0%9F%93%85+2023-10-15+sun">📅 2023-10-15 sun</a></h1>
<p><a href="https://crieit.now.sh/upload_images/bc3aeded7295d155ac6be34fc85a5183652ac4745434c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bc3aeded7295d155ac6be34fc85a5183652ac4745434c.png?mw=700" alt="202310__godot__15-0138--Restore.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 芋づる式に 次から次へと できてないところが 出てくるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 順調だけど 遅いなあ」</p>
<h2 id="Department も一般化しないと きつい"><a href="#Department+%E3%82%82%E4%B8%80%E8%88%AC%E5%8C%96%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%80%80%E3%81%8D%E3%81%A4%E3%81%84">Department も一般化しないと きつい</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ビジュアルノベル部門とか、システムメニュー部門も 一般化しないと きつくなってきた」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 再開するのに?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そう。個別にハードコーディングではきつい」</p>
<pre><code class="gd">func get_current_snapshot():
if self.statemachine_of_director.is_playing_visual_novel():
return self.get_snapshot("VisualNovelDepartment")
elif self.statemachine_of_director.is_playing_system_menu():
return self.get_snapshot("SystemMenuDepartment")
else:
return null
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 状態遷移にしていたが、 <code>Department</code> は、ただの変数にしたい」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>Department</code> は状態ではないという建付けにするわけだな」</p>
<h2 id="再開の機能付けた"><a href="#%E5%86%8D%E9%96%8B%E3%81%AE%E6%A9%9F%E8%83%BD%E4%BB%98%E3%81%91%E3%81%9F">再開の機能付けた</a></h2>
<p><a href="https://crieit.now.sh/upload_images/94d3e3071be22fcb29f1b626977602e7652af688342b9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/94d3e3071be22fcb29f1b626977602e7652af688342b9.png?mw=700" alt="202310__godot__15-0512--Department.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 再開の機能付けたんだが なぜだか知らないが このメニューは1回使うと 2回目以降から出てこないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 作った本人が分かってないの わらう」</p>
<h2 id="ポップしてるから、ランタイム中に元データが空になってる"><a href="#%E3%83%9D%E3%83%83%E3%83%97%E3%81%97%E3%81%A6%E3%82%8B%E3%81%8B%E3%82%89%E3%80%81%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E4%B8%AD%E3%81%AB%E5%85%83%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E7%A9%BA%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%82%8B">ポップしてるから、ランタイム中に元データが空になってる</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ポップしてるから シナリオが空になってるようだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 カーソルをインクリメントする方が いいのかしらねえ?」</p>
<h1 id="⏰ 12:57 再開"><a href="#%E2%8F%B0+12%3A57+%E5%86%8D%E9%96%8B">⏰ 12:57 再開</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 じゃあ プログラム・カウンターみたいに実装し直すか」</p>
<p>(カタ カタ カタ カタ)</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 直した。うまくいったぜ」</p>
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18603
2023-10-07T21:51:56+09:00
2023-10-07T22:32:49+09:00
https://crieit.net/posts/Godot-6521546c52a8d
Godot で選択肢のカーソルをブリンクさせようぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/b9f80e851902c0552f00a7d5a769c672652154316bfd1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b9f80e851902c0552f00a7d5a769c672652154316bfd1.png?mw=700" alt="202310__godot__07-2150-CursorNotYetBlink.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 カーソルが ブリンク(Blink;点滅)してないのは 気になるぜ。<br />
ブリンクさせよう」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 スプライトを使えば アニメーションで簡単に点滅できるんじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 こいつ、スプライトじゃなくて <code>Label</code> なんで。<br />
<strong>機種依存文字</strong> なんで」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 似非コンソールなんか 作ってるから 苦労すんのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>func _process(delta)</code> メソッドを使って <code>self.visible = not self.visible</code> で点滅するんじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>self.visible = false</code> したのだったら ずっと消えててほしいし、<br />
<code>self.visible = true</code> したのだったら ずっと表示されていてほしいんだぜ。<br />
勝手に visible をひっくり返さないでほしいんだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ 透明度を変えたらいいんじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 だから こいつは 画像じゃなくて <code>Label</code> なんだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👇 <code>Label</code> も、 <code>.modulate.a</code> プロパティがアルファ値だそうよ?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://ask.godotengine.org/45694/is-it-possible-to-change-the-transparency-of-label">Is it possible to change the transparency of label?</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 試してみるか……」</p>
<h1 id="実装"><a href="#%E5%AE%9F%E8%A3%85">実装</a></h1>
<pre><code># チョイスカーソル(Choice Cursor;選択肢カーソル)
extends Label
# ...
# カーソルが点滅するための時間カウント
var blinker_seconds = 0.0
var blinker_interval = 0.5
# ...
func _process(delta):
# 点滅
self.blinker_seconds += delta
if self.blinker_interval <= self.blinker_seconds:
if 0 < self.modulate.a:
self.modulate.a = 0.0
else:
self.modulate.a = 1.0
self.blinker_seconds -= self.blinker_interval
# ...
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 おっ、これで いけた!」</p>
<h1 id="親記事に戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%AB%E6%88%BB%E3%82%8B">親記事に戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18602
2023-10-07T18:06:24+09:00
2023-10-07T21:00:41+09:00
https://crieit.net/posts/Godot-65211f90d3f36
Godot で背景画像を差し替えようぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/794d2d0ee1e932e14887d6f963ff9dd66521061c63915.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/794d2d0ee1e932e14887d6f963ff9dd66521061c63915.png?mw=700" alt="202310__godot__07-1551--FileAndRank.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 次は 背景画像を差し替えるか」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このゲームのタイトルも決まってないよな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 タイトル画面 要るから 先に作ってしまえばどう?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 絵を描くのに 2、3時間かかるが 仕方ないな……」</p>
<p><a href="https://crieit.now.sh/upload_images/5954d96df30d660e39fdc2b88942e44f65211cacaaa2d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5954d96df30d660e39fdc2b88942e44f65211cacaaa2d.png?mw=700" alt="202310__godot__07-1627-Title-o2o8o0.png" /></a></p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://twitter.com/muzudho1/status/1654309777986711552">元ネタ</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 川崎駅前だぜ」</p>
<h1 id="スタート・メニュー"><a href="#%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%83%BB%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC">スタート・メニュー</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 せっかく 選択肢があるし、 ゲーム・スタートを選べるようにしたら?」</p>
<p><a href="https://crieit.now.sh/upload_images/63b90267ed0e48c936af1198768f542265211f36c923b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/63b90267ed0e48c936af1198768f542265211f36c923b.png?mw=700" alt="202310__godot__07-1804-StartMenu.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 スタート・メニュー便利だな。<br />
しかし ゲームを終了する機能なんか 作ってないぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 作れだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 なんか説明が もやっとしてるな」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/tutorials/inputs/handling_quit_requests.html">終了リクエストの処理</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 Node クラスなら、 <code>self.get_tree().quit()</code> で充分なんじゃないか?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.reddit.com/r/godot/comments/cjigi4/how_do_i_make_hitting_the_esc_key_exit_the_game/">How do I make hitting the ESC key exit the game? (GDScript Godot 3.1)</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 終了機能は 付けた」</p>
<h1 id="タイトルを画面に表示しろだぜ"><a href="#%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%82%92%E7%94%BB%E9%9D%A2%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">タイトルを画面に表示しろだぜ</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 タイトルを画面に表示しろだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 タイトルロゴとか 作ったら キマりがいいと思うんだが<br />
とりあえず 文字でも置いとけばいいか」</p>
<p><a href="https://crieit.now.sh/upload_images/7a2f745e64031bb1e88a0c352c00f1a4652130c887a7a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7a2f745e64031bb1e88a0c352c00f1a4652130c887a7a.png?mw=700" alt="202310__godot__07-1919-TitleScene.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 文字を置いたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 中身は RPGじゃないんだけどな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 この文字表示を 命令1つで 表示したり、消したりしたいのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 まだ やることが いっぱいあるな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 表示物の オン/オフ の機能は 付けたぜ」</p>
<h1 id="タイトル画面に音楽を付けろだぜ"><a href="#%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E7%94%BB%E9%9D%A2%E3%81%AB%E9%9F%B3%E6%A5%BD%E3%82%92%E4%BB%98%E3%81%91%E3%82%8D%E3%81%A0%E3%81%9C">タイトル画面に音楽を付けろだぜ</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 タイトル画面に音楽を付けろだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 タラタラタラ タラタラタラ<br />
ター ター ター</p>
<p>みたいな FF5 のオープニングみたいなやつだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ねーよ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 魔王魂から 探してくるしか なくない?」</p>
<p>~♪</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 魔王魂の人は ゲーム曲 あんま分かってないようで タメが長い。<br />
方向性が ゲームに向いてない方へ伸ばそうとしてる。<br />
もっと バサッと切った方がいい。<br />
探すしかないかー」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 タイトル画面を作ったぜ」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1710624630527193471?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 充分そうねえ」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18601
2023-10-06T23:01:16+09:00
2023-10-07T13:06:40+09:00
https://crieit.net/posts/Godot-BGM-6520132c5a067
Godot で BGM を付けようぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 お父ん、BGMを付けてくれだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>きふわらべファイター2.wav</code> ファイルだけ 持ってるけど」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>.wav</code> は ファイル・サイズがでかいから、 <code>.ogg</code> にしましょう」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 無料の変換ツール 落ちてるかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ネットで探すと 山ほどあるが」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 どれも 胡散臭いな…… 窓の杜で探してくれだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 読み方は分からないが これなんかどうだぜ?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://forest.watch.impress.co.jp/library/software/bonkenc/">fre:ac</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 説明読んでも分からん 使ってみれば 分かるか……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>Microsoft Apps</code> を開いても 灰色のウィンドウが出てきただけだった。<br />
インストールできない 終わり」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 直せよ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 じゃあ これは どうだぜ?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://forest.watch.impress.co.jp/library/software/flicaudiocon/">FlicFlac Audio Converter</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 めっちゃ 分かりやすく 使いやすく <code>.wav</code> ファイルを <code>.ogg</code> ファイルに変換でけた」</p>
<h1 id="Godot で、どうやって .ogg ファイルを鳴らすの?"><a href="#Godot+%E3%81%A7%E3%80%81%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6+.ogg+%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%B3%B4%E3%82%89%E3%81%99%E3%81%AE%EF%BC%9F">Godot で、どうやって .ogg ファイルを鳴らすの?</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 Godot で、どうやって .ogg ファイルを鳴らすの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 さっぱり分からん」</p>
<p><a href="https://crieit.now.sh/upload_images/0e19d3cd505912c2e9bf46df20fff71c652010b268a94.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0e19d3cd505912c2e9bf46df20fff71c652010b268a94.png?mw=700" alt="202310__godot__06-2250--Musician.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 とりあえず <code>Director</code> の下に <code>Musician</code> を置こうぜ?<br />
音楽のことは 全部 こいつに丸投げしよう!」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 音楽ファイルは どこに置いてあるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/f3996f9a4849812eaf9fb40dba8a3872652011bc3e65e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f3996f9a4849812eaf9fb40dba8a3872652011bc3e65e.png?mw=700" alt="202310__godot__06-2254--Audio.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>res://audio/bgm</code> の下に置いておいたぜ。後は任せたぜミュージシャン」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 いつ鳴らすの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 シナリオ・ファイルで 指定したらいいんだろうけど……」</p>
<h1 id="スクリプト設計"><a href="#%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E8%A8%AD%E8%A8%88">スクリプト設計</a></h1>
<p><a href="https://crieit.now.sh/upload_images/13c8db1716d8a958b900245ff9688cb3652012c4e79c1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/13c8db1716d8a958b900245ff9688cb3652012c4e79c1.png?mw=700" alt="202310__godot__06-2258--Scenario.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 例えば <code>!bgm きふわらべファイター2.ogg</code> と書いておけば<br />
BGM が鳴ることにしたらどうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/e72d54cfefb1cdd389df97939bcc07fa652013dfcb72a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e72d54cfefb1cdd389df97939bcc07fa652013dfcb72a.png?mw=700" alt="202310__godot__06-2303--bgm.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 鳴らないが」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 台本を読んで演技する人って 英語で何て言うんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 パフォーマー(Performer;演者)じゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 演者が BGMを鳴らすわけじゃないしな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 バックバンドのことかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 シナリオ というのが おかしいのかもしらん。<br />
素直に プログラム(Program;進行表)という名前にした方がいいんだろうか?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 シナリオの上位概念として プログラムを置くの?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 コンピューターがいうプログラムと、<br />
番組制作がいうプログラムは また別物なんだよな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 分かった、 <code>Director</code> の下に <code>AssistantDirector</code> を置こう!」</p>
<p><a href="https://crieit.now.sh/upload_images/fd7e7281c823db8ea13fc830f4a5735e6520190f94283.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fd7e7281c823db8ea13fc830f4a5735e6520190f94283.png?mw=700" alt="202310__godot__06-2325--AssistantDirector.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>ScenarioPlayer</code> とかいう造語を <code>AssistantDirector</code> に変更したぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 アシスタント・ディレクターと メッセージ・ウィンドウは どっちが偉いんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 アシスタント・ディレクターの方が 偉いと思いたいが……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ユーザーの入力と、シナリオの強制力は どっちが強いの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ユーザーも シナリオに従ってほしい」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 メッセージ・ウィンドウが持っている <strong>メッセージ送り</strong> という働きが<br />
かなりの強権で アシスタント・ディレクターなんか無視して<br />
有無を言わさず メッセージ送り するわよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 うーん 裁量が ぐちゃぐちゃ だ……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 メッセージ・ウィンドウが持つべき権利は <strong>ウィンドウを消すから、次のメッセージくれ</strong> であって、<br />
<strong>メッセージ送り</strong> ではないはずなのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 じゃあ メッセージ・ウィンドウが シナリオを持っているのが悪くて、<br />
アシスタント・ディレクターが セリフだけを千切って<br />
メッセージ・ウィンドウに渡せばいいんだ」</p>
<pre><code class="gd"># 状態遷移図
# ーーーーー
#
# +ーーーーー+
# | はじめ |
# +ーー+ーー+
# |
# |
# +ーーーーーーーーーー>+
# | |
# | V
# | +ーーーーーーーー+
# | | 0.非表示中 |
# | +ーーー+ーーーー+
# | |
# | | シナリオ・データ設定
# | |
# | +ーーーーーー>+
# | | |
# | | V
# | | +ーーーーーーーーーーーーーーー+
# | | | 1.タイプライター風表示中 |
# | | +ーーー+ーーーーーーーーーーー+
# | | |
# | | | バッファーが空になった
# | | V
# | | +ーーーーーーーーー+
# | | | 2.完全表示中 |
# | | +ーーー+ーーーーー+
# | | ※上位のオブジェクトに指示待ちの通知を送る
# | | ※これにて自律を停止
# | |
# | |
# | | ※外部からの入力
# | | |
# | | |
# | +ーーーー<ーー+ まだ続きがある。ページ・フォワード
# | はい |
# | |
# +ーーーーーーーーーーー+ すべての文字を吐き出した。オール・ページ・フラッシュド
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 完全な自律を停止して、外部からの入力を待つ状態遷移に変えなくてはダメだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>.clear_and_awaiting_order()</code> みたいなメソッドを作るか」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 作った。そして調整して変更した」</p>
<pre><code class="gd"> """
!bgm きふわらべファイター2.ogg
""",
"""\
!choice 1,2
・6筋の7段目の駒を6段目に突く
・角道を止める
""",
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 これは セリフか? 命令か? どう区別する?」</p>
<pre><code class="gd"> """
!
bgm きふわらべファイター2.ogg
""",
"""\
!
choice 1,2
・6筋の7段目の駒を6段目に突く
・角道を止める
""",
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 命令のメッセージは <code>!</code> だけの行から始まるように 仕様を変更するか……?」</p>
<p><a href="https://crieit.now.sh/upload_images/38b0d7d67f4b75b23eed21a44a14992e65203f39cd4f2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/38b0d7d67f4b75b23eed21a44a14992e65203f39cd4f2.png?mw=700" alt="202310__godot__07-0208--BGM-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 大改造して BGM の名前も検出できるようにしたぜ」</p>
<h1 id="BGMを鳴らせだぜ"><a href="#BGM%E3%82%92%E9%B3%B4%E3%82%89%E3%81%9B%E3%81%A0%E3%81%9C">BGMを鳴らせだぜ</a></h1>
<p>.<a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 じゃあ BGMを鳴らせだぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://ore2wakaru2.hatenablog.com/entry/2018/05/23/235919">Godot 音シュー02「BGMを鳴らす」</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 よし、鳴ったぜ。 デフォルトの音デカいから -20 db にしたぜ」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1710345579031851360?s=20">動画</a></p>
<h1 id="ページ送りの効果音を付けない?"><a href="#%E3%83%9A%E3%83%BC%E3%82%B8%E9%80%81%E3%82%8A%E3%81%AE%E5%8A%B9%E6%9E%9C%E9%9F%B3%E3%82%92%E4%BB%98%E3%81%91%E3%81%AA%E3%81%84%EF%BC%9F">ページ送りの効果音を付けない?</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 効果音は付けないの? ページ送りとか、選択肢のカーソルの移動とか」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 シナリオとはまた別の理由で 鳴る音か」</p>
<p>.<a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Godot では BGMと 効果音に 区別は無いのかもしれないな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 じゃあ 魔王魂で 無料の効果音探すか。10年ぐらい前から このサイト ある気がするな」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://maou.audio/profile/">魔王魂</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 思ってるやつは 多分 無いだろなと思ったが 無かった。<br />
仕方ないから それっぽいやつを 探すか」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1710487025499979987?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 効果音も付けた。 効果音も音デカいな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 選択肢を選んだときの 確定音も付けなさいよ」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1710496701906403531?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 付けた……、エンターキーの打鍵音の方が デケぇ」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18599
2023-10-05T22:16:14+09:00
2023-10-07T15:53:19+09:00
https://crieit.net/posts/a6659d9d63482dc81d9c259facf4bde7
Godot でセンターウィンドウを作ろうぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/8f0912299dc3c87e073aeec356dd71ad651eb0c2030dd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8f0912299dc3c87e073aeec356dd71ad651eb0c2030dd.png?mw=700" alt="202310__godot__05-2140--Today3.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 中央辺りに ウィンドウを置けばいいのかだぜ?<br />
窓枠も付けるなら 少し上に ずらすか……」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 下のメッセージ・ウィンドウと同じ見た目で充分だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 角丸の 内側のカーブは 直角にするの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あんまり 凝らずに 使い回そうかな……」</p>
<p><a href="https://crieit.now.sh/upload_images/afb154aee6d27febd26d2fcc9d8028b6651eb309ea084.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/afb154aee6d27febd26d2fcc9d8028b6651eb309ea084.png?mw=700" alt="202310__godot__05-2145--CenterWindow-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 これで充分だろ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Godot に載せてみようぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/a7d12e3f4ed13de151ccc2835dcd11d2651eb6559bfa3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a7d12e3f4ed13de151ccc2835dcd11d2651eb6559bfa3.png?mw=700" alt="202310__godot__05-2211--CenterWindow-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じに置いて……、これでは空枠だが……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 サラダの国のトマト姫感あるわねえ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あの傑作の」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 なんか画像を 当てはめてくれだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/8ef5828388698dec4c8e8132f45b12da651ebee07da6b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8ef5828388698dec4c8e8132f45b12da651ebee07da6b.png?mw=700" alt="202310__godot__05-2217--CenterWindowImage-o2o1o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 即席で 将棋盤だけ描いて……」</p>
<p><a href="https://crieit.now.sh/upload_images/0ca7caffe6dafec4696490865a61caa1651ebefe91833.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0ca7caffe6dafec4696490865a61caa1651ebefe91833.png?mw=700" alt="202310__godot__05-2248--CenterWindow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 枠の後ろに置くだけ……、<br />
うわっ、 センター・ウィンドウを非表示にするとか、<br />
画像を差し替えるとか 要望が いっぱい来そう」</p>
<p><a href="https://crieit.now.sh/upload_images/e6eecc82da7aa564ed136ae1e914acb0651ebfba5feeb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e6eecc82da7aa564ed136ae1e914acb0651ebfba5feeb.png?mw=700" alt="202310__godot__05-2252--Run.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👆 <code>!center_window 将棋盤</code> 的なゲームスクリプトで<br />
制御できるようにしたら どうなの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 やらなければならないことが 大量にある 萎えた」</p>
<h2 id="表示、非表示を切り替えられるようにしようぜ?"><a href="#%E8%A1%A8%E7%A4%BA%E3%80%81%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%89%E3%82%8C%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">表示、非表示を切り替えられるようにしようぜ?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 他の記事で 他のことが だいぶ進んだ。 センター・ウィンドウの命令の構文考えるか」</p>
<p><a href="https://crieit.now.sh/upload_images/a7572368691d986569285f93746ff6276520e52fb5ef9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a7572368691d986569285f93746ff6276520e52fb5ef9.png?mw=700" alt="202310__godot__07-1355--Cwnd-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じで ファイル名を指定するようにしたら どうだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ノード名を指定した方がよくない?」</p>
<pre><code class="gd"> """\
!
cwnd: 将棋盤
""",
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 じゃあ こうか」</p>
<h2 id="デフォルトのフォントは簡体字"><a href="#%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%81%AF%E7%B0%A1%E4%BD%93%E5%AD%97">デフォルトのフォントは簡体字</a></h2>
<p><a href="https://crieit.now.sh/upload_images/1a552e4709b02804462eb2f90eda8cb66520e6966c410.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1a552e4709b02804462eb2f90eda8cb66520e6966c410.png?mw=700" alt="202310__godot__07-1402--ChinaFont-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ああっ 簡体字だ!」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 アジア人は ほとんどが中国人だからな。中国語に合わせておけば 大多数の人が幸せになるだろう」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 却下。 日本語に矯正する」</p>
<p><a href="https://crieit.now.sh/upload_images/8503ff571ee6d9b916b70654a7baf57d6520e9c919bd1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8503ff571ee6d9b916b70654a7baf57d6520e9c919bd1.png?mw=700" alt="202310__godot__07-1415--Fonts-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 フォントは ちゃんと設定する必要が あったか~」</p>
<p><a href="https://crieit.now.sh/upload_images/3becadc8a25d1aa0791bd3de6142e3cb6520ea6c0d9b1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3becadc8a25d1aa0791bd3de6142e3cb6520ea6c0d9b1.png?mw=700" alt="202310__godot__07-1418--JapaneseFont-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 けっこう 雰囲気が変わってしまったな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 慣れてくるでしょう」</p>
<h2 id="表示/非表示を切り替えるようにした"><a href="#%E8%A1%A8%E7%A4%BA%EF%BC%8F%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%9F">表示/非表示を切り替えるようにした</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 でけた」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1710539853447008410?s=20">動画</a></p>
<h2 id="別のイラストも表示してみてよ"><a href="#%E5%88%A5%E3%81%AE%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E3%82%82%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%A6%E3%81%BF%E3%81%A6%E3%82%88">別のイラストも表示してみてよ</a></h2>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 別のイラストも表示してみてよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 唐揚げの絵とか 描きたくないけどな」</p>
<p><a href="https://crieit.now.sh/upload_images/2e8da97270e48c78ca32138c5f544efd6520fc0c8938b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2e8da97270e48c78ca32138c5f544efd6520fc0c8938b.png?mw=700" alt="202310__godot__07-1526--FileAndRank.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな絵でいいか」</p>
<p><a href="https://crieit.now.sh/upload_images/794d2d0ee1e932e14887d6f963ff9dd66521001e3aeb7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/794d2d0ee1e932e14887d6f963ff9dd66521001e3aeb7.png?mw=700" alt="202310__godot__07-1551--FileAndRank.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 でけたぜ」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1710546806046937273?s=20">動画</a></p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18594
2023-10-04T22:24:07+09:00
2023-10-05T00:42:11+09:00
https://crieit.net/posts/Godot-651d677787d5e
Godot でシナリオの分岐を作ろうぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/14d2a4d10dbad954dfebbf2f16e26631651d42ea735ca.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/14d2a4d10dbad954dfebbf2f16e26631651d42ea735ca.png?mw=700" alt="202310__godot__04-1944--Choices.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 選択肢までは 出るのだった」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 その選択肢を選んだあと 次の会話に つながってほしいのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 多分、それは メッセージ・ウィンドウの仕事ではなくて、<br />
メッセージ・ウィンドウへ メッセージを手配してくる 交換手か何かの仕事だな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 ストーリーテラー(storyteller;語り部)のようなクラスでも 作るかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 シナリオプレイヤー(Scenario Player;シナリオ再生機)ぐらいの造語でいいかな」</p>
<h1 id="シナリオプレイヤーを作ろう"><a href="#%E3%82%B7%E3%83%8A%E3%83%AA%E3%82%AA%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86">シナリオプレイヤーを作ろう</a></h1>
<p><a href="https://crieit.now.sh/upload_images/468f81a7def2c17846502c25846f0569651d4c784c529.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/468f81a7def2c17846502c25846f0569651d4c784c529.png?mw=700" alt="202310__godot__04-2028--ScenarioPlayer.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 じゃあ 空っぽの <code>Node</code> をベースに シナリオプレイヤーを作ってしまおう。<br />
細かいことは これから詰めていこう」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 なんでもかんでも オートマトン(Automaton;自動人形)と同じように作ればいいんだろ。<br />
ステートマシーンを持たせろだぜ」</p>
<p>📄 <code>ScenarioPlayerStatemachine.gd</code>:</p>
<pre><code class="gd"># シナリオ・プレイヤー・ステートマシーン(Scenario Player Statemachine;台本再生機状態遷移図)
extends Node
class_name ScenarioPlayerStatemachine
# 状態遷移図
# ーーーーー
#
# +ーーーーー+
# | はじめ |
# +ーー+ーー+
# |
# |
# +ーーーーーーーーーー>+
# | |
# | V
# | +ーーーーーーー+
# | | 0.停止中 |
# | +ーーー+ーーー+
# | |
# | | 再生 #ステートマシーン外部からの開始の合図。段落番号を渡される
# | |
# | +ーーーーーー>+
# | | |
# | | V
# | | +ーーーーーーー+
# | | | 1.再生中 |
# | | +ーーー+ーーー+
# | | |
# | | |
# | | |
# | +ーーーー<ーー+ 再生 #別の段落番号が書かれていた
# | はい |
# | |
# +ーーーーーーーーーーー+ 停止 #段落が終わった
#
enum States {None, Playing}
# 状態
var state = States.None
# 停止中か?
func is_none():
return self.state == States.None
# 再生中か?
func is_playing():
return self.state == States.Playing
# 再生
func play(paragraph_no):
print("[ステートマシーン] パラグラフの再生")
self.state = States.Playing
# 停止
func stop(paragraph_no):
print("[ステートマシーン] 停止")
self.state = States.None
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんなもんかだぜ?」</p>
<h1 id="シナリオプレイヤーにステートマシーンを実装しろだぜ"><a href="#%E3%82%B7%E3%83%8A%E3%83%AA%E3%82%AA%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%AB%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%9E%E3%82%B7%E3%83%BC%E3%83%B3%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">シナリオプレイヤーにステートマシーンを実装しろだぜ</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 そのステートマシーンを シナリオプレイヤーに実装しろだぜ」</p>
<p>📄 <code>ScenarioPlayer.gd</code>:</p>
<pre><code class="gd"># シナリオプレイヤー(Scenario Player;台本再生機)
extends Node
# 状態遷移機械
var statemachine = load("scripts/ScenarioPlayerStatemachine.gd").new()
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
if self.statemachine.is_none():
# 停止中
# 何もしない
pass
elif self.statemachine.is_playing():
# 再生中
# 何もしない
pass
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ひとまず こんなもんかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 シナリオプレイヤーは 自律的に動くといっても、<br />
起動の合図は 外部から与えるのよね?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そうだぜ。 <strong>監督</strong> が指示してなければ まだ動くなだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 じゃあ 本当に自律的に動く 監督 が必要なんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 監督も作るか~」</p>
<p><a href="https://crieit.now.sh/upload_images/d4b4b27152485f228316425dfd6597e4651d6c20b2aad.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d4b4b27152485f228316425dfd6597e4651d6c20b2aad.png?mw=700" alt="202310__godot__04-2232--DirectorNode.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ルート・ノードの名前を <code>Director</code> にしたった」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 合理的ねえ」</p>
<p>📄 <code>Director.gd</code>:</p>
<pre><code class="gd"># ディレクター(Director;監督)
# とりあえず、ゲーム全体をコントロールする
extends Node2D
# Called when the node enters the scene tree for the first time.
func _ready():
# シナリオ・ブックから、内容を取出す
print("[2Dプロジェクト] シナリオ・ブックから、内容を取出す")
var scenario_array = $"./ScenarioBook".scenario_array
# シナリオプレイヤーへ、内容を渡す
print("[2Dプロジェクト] シナリオプレイヤーへ、内容を渡す")
$"./ScenarioPlayer".set_scenario_array(scenario_array)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 監督のスクリプトの雰囲気は こんな感じになるはずだぜ」</p>
<h1 id="シナリオに段落番号を振りましょう!"><a href="#%E3%82%B7%E3%83%8A%E3%83%AA%E3%82%AA%E3%81%AB%E6%AE%B5%E8%90%BD%E7%95%AA%E5%8F%B7%E3%82%92%E6%8C%AF%E3%82%8A%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%EF%BC%81">シナリオに段落番号を振りましょう!</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 シナリオブックの 各部分に パラグラフ(Paragraph;段落)番号を振れない?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 リストではなく マップが必要だな。 Godot にマップはあるのかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 <code>Dictionary</code> という名前で有るぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/classes/class_dictionary.html">Godot Engine / Dictionary</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 調べてみるか……」</p>
<p>📄 <code>ScenarioBook.gd</code>:</p>
<pre><code class="gd"># 段落番号を指定して、段落を取得
func get_paragraph(paragraph_code):
return self.document[paragraph_code]
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 段落番号を指定して、段落を取得できるメソッドを作っておくぜ。<br />
あとで <code>1.2.3</code> みたいな段落番号を使いたいので、番号は文字列にしておくぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/2a308112fd8adf71a8749aabd2c03883651d70ed15a63.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2a308112fd8adf71a8749aabd2c03883651d70ed15a63.png?mw=700" alt="202310__godot__04-2304--ScenarioDocument.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 インデント2つが もったいない気がするが、<br />
普通の書き方を優先し、上図のように セリフを並べることにするぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/184a8c239d1134b1edee9fdc0ed0301e651d73f0d8a1b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/184a8c239d1134b1edee9fdc0ed0301e651d73f0d8a1b.png?mw=700" alt="202310__godot__04-2316--Paragraph_1.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな風に パラグラフを追加していくものとしようぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 選択肢の1番目が 段落の <code>1.1</code> に飛ぶのを どうコントロールすんの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そのコントロールをするのが <code>ScenarioPlayer</code> だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/f767fb7a696b1953eb51d1d50cc9c1b5651d809e34946.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f767fb7a696b1953eb51d1d50cc9c1b5651d809e34946.png?mw=700" alt="202310__godot__05-0011--Mappings.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 こんな感じでマッピングするんだが、なんかよく分からないな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 どうやっても 分かんないんだから 2重の <code>Dictionary</code> にしたらどうなの?」</p>
<p><a href="https://crieit.now.sh/upload_images/397b9a130b3079110195889a25ac6895651d822450b52.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/397b9a130b3079110195889a25ac6895651d822450b52.png?mw=700" alt="202310__godot__05-0017--MappingsDocument.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 これで分岐の最低要件は満たせるが、確かに 見ても よく分からんよな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 この設定ファイルを編集する外部エディターぐらい お父ん 作れるだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 それもそうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/370b7667811f26cfc7c229ece475b890651d85777e93c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/370b7667811f26cfc7c229ece475b890651d85777e93c.png?mw=700" alt="202310__godot__05-0031--ScenarioBook.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 段落番号も止めて、文字列にしたった」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 台詞だけで できたゲームなら これでいけるけど、<br />
戦闘シーンや、マップや、ムービーに続けたいときは どうすんの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 そのときは インデックスでなんとかしようぜ?」</p>
<h2 id="動画"><a href="#%E5%8B%95%E7%94%BB">動画</a></h2>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1709594001161240659?s=20">動画</a></p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18587
2023-10-02T22:02:49+09:00
2023-10-02T22:02:49+09:00
https://crieit.net/posts/Godot-role-playing-game
Godot の role_playing_game デモ・プロジェクトのバグを見てみようぜ?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/112419e9ad371a7f9ba1649ffe77c96f651ab7f517761.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/112419e9ad371a7f9ba1649ffe77c96f651ab7f517761.png?mw=700" alt="202310__godot__02-2130--RPGBug.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 Godot のデモ・プロジェクトに入っている <code>role_playing_game</code> というソースコードには<br />
コンパイルエラーがあって動かない」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Unity が健在なときは 2番手以下という感じの 選ばれないゲーム・エンジンだからな。<br />
手入れが行き届いていないのだろう」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ちゃちゃっと 直せないの?」</p>
<h2 id="📄 Game.gd"><a href="#%F0%9F%93%84+Game.gd">📄 Game.gd</a></h2>
<p>📄 Game.gd:</p>
<pre><code class="gd">func _ready():
exploration_screen = get_node(exploration_screen)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/6cc2afbaea4e8223763eec18b0757512651ab94417379.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6cc2afbaea4e8223763eec18b0757512651ab94417379.png?mw=700" alt="202310__godot__02-2136--ErrorMessage.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 エラーメッセージが出ているが、コピー貼り付けできない。<br />
とにかく いろいろなことが わたしには合わない嫌なエディターだぜ」</p>
<p>📄 Game.gd:</p>
<pre><code>@export var exploration_screen: NodePath
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👆 ファイルの冒頭のこの行で <code>exploration_screen</code> 型は <code>NodePath</code> 型だと宣言しているから、<br />
<code>exploration_screen = get_node(exploration_screen)</code> と書いたら <code>Node</code> を代入しようとしているから、<br />
型が合って無いんじゃないの?」</p>
<pre><code class="gd">a = get_node(a)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 そのそも 形がおかしい」</p>
<p>📄 Game.gd:</p>
<pre><code class="gd">extends Node
# @export var combat_screen: NodePath
@export var combat_screen: Node
# @export var exploration_screen: NodePath
@export var exploration_screen: Node
const PLAYER_WIN = "res://dialogue/dialogue_data/player_won.json"
const PLAYER_LOSE = "res://dialogue/dialogue_data/player_lose.json"
func _ready():
# exploration_screen = get_node(exploration_screen)
exploration_screen = $"Exploration"
# combat_screen = get_node(combat_screen)
combat_screen = $"Combat"
# ...
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 上記のように修正するぜ」</p>
<h2 id="📄 TurnQueue.gd"><a href="#%F0%9F%93%84+TurnQueue.gd">📄 TurnQueue.gd</a></h2>
<p><a href="https://crieit.now.sh/upload_images/ca3b3df2ecfd1a220ea9c2011092147b651abb6a36d94.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ca3b3df2ecfd1a220ea9c2011092147b651abb6a36d94.png?mw=700" alt="202310__godot__02-2144--ErrorMessage2.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👆 バグは まだまだ あるわよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>combatants_list</code> が何なのか コメントも何もない クソだな」</p>
<p>📄 TurnQueue.gd:</p>
<pre><code class="gd"># @export var combatants_list: NodePath
@export var combatants_list: Node
# ...
func _ready():
# combatants_list = get_node(combatants_list)
combatants_list = $"Combat"
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 当てずっぽうで 上記のように変更」</p>
<h2 id="📄 UI.gd"><a href="#%F0%9F%93%84+UI.gd">📄 UI.gd</a></h2>
<p><a href="https://crieit.now.sh/upload_images/0b146565c0f7422a028d2161f2c90cc9651abd47da111.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0b146565c0f7422a028d2161f2c90cc9651abd47da111.png?mw=700" alt="202310__godot__02-2152--ErrorMessage3.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👆 バグは まだまだ あるわよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 デモ・プロジェクトに ゴミ・ファイルでも 入れていたのだろうか?」</p>
<p>📄 UI.gd:</p>
<pre><code class="gd">#@export var combatants_node: NodePath
@export var combatants_node: Node
func _ready():
# combatants_node = get_node(combatants_node)
combatants_node = $"Combat"
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 当てずっぽうで 上記のように変更」</p>
<h2 id="📄 Grid.gd"><a href="#%F0%9F%93%84+Grid.gd">📄 Grid.gd</a></h2>
<p><a href="https://crieit.now.sh/upload_images/a6c8b2c063c7de62430529f149d699f4651abdf9ecf68.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a6c8b2c063c7de62430529f149d699f4651abdf9ecf68.png?mw=700" alt="202310__godot__02-2156--ErrorMessage4.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👆 バグは まだまだ あるわよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ひどいな……」</p>
<p>📄 Grid.gd:</p>
<pre><code class="gd"># @export var dialogue_ui: NodePath
@export var dialogue_ui: Node
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>world_to_map</code> という関数は無い。修正不能」</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
むずでょ
tag:crieit.net,2005:PublicArticle/18585
2023-09-30T00:02:50+09:00
2023-10-01T16:19:48+09:00
https://crieit.net/posts/GDScript
GDScript を覚えようぜ(^~^)?
<h1 id="親記事から来た"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 <strong>GDScript</strong> の説明は 下のリンク先にあるぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/getting_started/step_by_step/scripting_languages.html#doc-scripting">Godot Engine 4.2の日本語のドキュメント / スクリプト言語</a></p>
<h1 id="ノード"><a href="#%E3%83%8E%E3%83%BC%E3%83%89">ノード</a></h1>
<p><a href="https://crieit.now.sh/upload_images/fdd39aeaa2d5c671f89ffed9d658be156516e889b7f77.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fdd39aeaa2d5c671f89ffed9d658be156516e889b7f77.png?mw=700" alt="202309__godot__30-0005--Node-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <strong>Godot</strong> にあるものは全て ノード(Node)で、<br />
<strong>GDScript</strong> というのは そのノードを操作するものみたいだな」</p>
<h1 id="Python に似ているが全然別物"><a href="#Python+%E3%81%AB%E4%BC%BC%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8C%E5%85%A8%E7%84%B6%E5%88%A5%E7%89%A9">Python に似ているが全然別物</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 GDScript は Python に似ているが 全然別物ということだぜ。<br />
新しく覚え直せだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 また、GDScript の実行速度は遅いらしいぜ。<br />
GDScript は C++ 言語で書かれたプログラムを呼び出すから、内部的な処理は速いらしいぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Python と同じ生き方してんな」</p>
<h1 id="Godot の独特な用語: シーン"><a href="#Godot+%E3%81%AE%E7%8B%AC%E7%89%B9%E3%81%AA%E7%94%A8%E8%AA%9E%EF%BC%9A%E3%80%80%E3%82%B7%E3%83%BC%E3%83%B3">Godot の独特な用語: シーン</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👇 Godot には ノードと シーンという用語が出てくるんだけど、<br />
計算機科学の わたしたちから見ると 造語のクセがあるわよ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/getting_started/step_by_step/nodes_and_scenes.html">ノードとシーン</a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 えーと、つまり」</p>
<p><a href="https://crieit.now.sh/upload_images/3f070cde77a220f4642ea4987d8605926516ee88a3639.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3f070cde77a220f4642ea4987d8605926516ee88a3639.png?mw=700" alt="202309__godot__30-0031--GraphTheory.png" /></a></p>
<p>.<a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 グラフセオリー(Graph Theory;グラフ理論)の一題材の ツリー・ストラクチャー(Tree Structure;木構造)を<br />
わたしたちは 知っているが」</p>
<p><a href="https://crieit.now.sh/upload_images/0c720d2ecfdc095edc3554898aae1be36516ef2d9a4a9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0c720d2ecfdc095edc3554898aae1be36516ef2d9a4a9.png?mw=700" alt="202309__godot__30-0035--GodotScene.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 Godot は ツリーのことを シーン(Scene)と言い換えているのかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 多分そう」</p>
<p><a href="https://crieit.now.sh/upload_images/c723716349b74fe153556ddc74bae6306516f01b5fe5a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c723716349b74fe153556ddc74bae6306516f01b5fe5a.png?mw=700" alt="202309__godot__30-0039--SubTree.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 さらに 計算機科学の わたしたちは 木の中に含まれるサブツリー(Subtree;部分木)を知っているぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 部分木もまた 木よね」</p>
<p><a href="https://crieit.now.sh/upload_images/5e451eea55c0b09804de8b311bfb3e1c6516f0ee9926c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5e451eea55c0b09804de8b311bfb3e1c6516f0ee9926c.png?mw=700" alt="202309__godot__30-0043--GodotSceneNest.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 Godot では、 シーンもまた ノードになる、という <strong>言い方</strong> をしている」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ シーンは ツリーなんだ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 シーン、つまり サブツリーのファイルの拡張子は <code>.tscn</code> のようね」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 なんて発音するか分からん嫌な拡張子だ…… ティーシーン?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 Godot は、 <code>.tscn</code> を再生するプレイヤーなのよ」</p>
<h1 id="GDScript Reference"><a href="#GDScript+Reference">GDScript Reference</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 GDScript のリファレンスがあるそうだぜ。リンクをメモしておこう」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/tutorials/scripting/gdscript/gdscript_basics.html#doc-gdscript">GDScript reference</a></p>
<h1 id="なんか 画像素材を1つ用意しろだぜ"><a href="#%E3%81%AA%E3%82%93%E3%81%8B%E3%80%80%E7%94%BB%E5%83%8F%E7%B4%A0%E6%9D%90%E3%82%92%EF%BC%91%E3%81%A4%E7%94%A8%E6%84%8F%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">なんか 画像素材を1つ用意しろだぜ</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 プログラムのレッスンを進めていくんで、なにか 小さな画像素材を 1つ用意してくれだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/81b266d4e53136836776cee61a431baf6516f3666e8a1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/81b266d4e53136836776cee61a431baf6516f3666e8a1.png?mw=700" alt="2016_8_6_0_20_30_88_c1.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 わたしで いいかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 しかたないな…… じゃあ それで」</p>
<h1 id="新規プロジェクト作成"><a href="#%E6%96%B0%E8%A6%8F%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E4%BD%9C%E6%88%90">新規プロジェクト作成</a></h1>
<p><a href="https://crieit.now.sh/upload_images/ea6276feae259d433b92b132db97782f6516f47a9b839.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ea6276feae259d433b92b132db97782f6516f47a9b839.png?mw=700" alt="202309__godot__30-0059--NewProject.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 Godot で新規プロジェクトを作成するぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/43d0406d967c661b9a56c44ee32f73736516f6f639a5a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/43d0406d967c661b9a56c44ee32f73736516f6f639a5a.png?mw=700" alt="202309__godot__30-0059--o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 最初に選ぶのが <strong>その他のノード</strong> って どうかしてるよな?」</p>
<p><a href="https://crieit.now.sh/upload_images/ebbf6b76ee6b2b6cb31f73d22a9c18456516f770eb735.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ebbf6b76ee6b2b6cb31f73d22a9c18456516f770eb735.png?mw=700" alt="202309__godot__30-0111--Sprite2D-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 その中から <strong>Sprite2D</strong> を選ぶなんて、直観的に無理だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/cde187520b2984c5e82ab352c09a72336516f7d29430c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cde187520b2984c5e82ab352c09a72336516f7d29430c.png?mw=700" alt="202309__godot__30-0113--Editor-Sprite2DNode-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 これが Sprite2D をルート(Root;根)に持つ シーン(※つまりサブツリー)を作成したところだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/0173158b360e46e8e9d15af9ad0e82c66516f9b5b2965.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0173158b360e46e8e9d15af9ad0e82c66516f9b5b2965.png?mw=700" alt="202309__godot__30-0120--Texture-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 テクスチャー欄へ さっきの画像を読み込めだぜ」</p>
<h1 id="新規 GDScript 作成: ハローワールド"><a href="#%E6%96%B0%E8%A6%8F+GDScript+%E4%BD%9C%E6%88%90%EF%BC%9A%E3%80%80%E3%83%8F%E3%83%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89">新規 GDScript 作成: ハローワールド</a></h1>
<p><a href="https://crieit.now.sh/upload_images/745d4a4ff407d1709f9bd69da1ef33316516fa965af4c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/745d4a4ff407d1709f9bd69da1ef33316516fa965af4c.png?mw=700" alt="202309__godot__30-0125--NewScript-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 次に <strong>新規スクリプト</strong> を作ったらいいのかな?」</p>
<p><a href="https://crieit.now.sh/upload_images/0272a6f6df3677df1bea5cc0205b74396516fb13d82ab.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0272a6f6df3677df1bea5cc0205b74396516fb13d82ab.png?mw=700" alt="202309__godot__30-0127--TemplateEmpty-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 テンプレートを <strong>Object:Empty</strong> にしとけだそうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/72a1822b4b069e6a7830155b071d2a1a6516fb775159f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/72a1822b4b069e6a7830155b071d2a1a6516fb775159f.png?mw=700" alt="202309__godot__30-0129--CodeEditor.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 なんか コード・エディターが出てくるな。ここに GDScript を書けばいいのだろう」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 かっこいいコードを書いてくれよ」</p>
<pre><code class="gd">extends Sprite2D
func _init():
print("Hello, world!")
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 サンプル通り書いてみよう」</p>
<p><a href="https://crieit.now.sh/upload_images/e2052a5a11d13176660d735f7b4f60916516fc9c87956.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e2052a5a11d13176660d735f7b4f60916516fc9c87956.png?mw=700" alt="202309__godot__30-0133--Run-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 なんか 分からんな…… <strong>現在のものを選択</strong> で」</p>
<p><a href="https://crieit.now.sh/upload_images/a8b6e722733ba947f41399dfc81efc226516fd219827a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a8b6e722733ba947f41399dfc81efc226516fd219827a.png?mw=700" alt="202309__godot__30-0135--HelloWorld-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <strong>Hello, world!</strong> と出力ビューに表示されたな」</p>
<h2 id="コンストラクター: _init()"><a href="#%E3%82%B3%E3%83%B3%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%BC%EF%BC%9A%E3%80%80_init%28%29">コンストラクター: _init()</a></h2>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>func _init():</code> メソッドは コンストラクタなんだ」</p>
<h1 id="くるくる回す"><a href="#%E3%81%8F%E3%82%8B%E3%81%8F%E3%82%8B%E5%9B%9E%E3%81%99">くるくる回す</a></h1>
<p><a href="https://crieit.now.sh/upload_images/b489de93c54dc490ea700d674f50189d6516ff5b4b686.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b489de93c54dc490ea700d674f50189d6516ff5b4b686.png?mw=700" alt="202309__godot__30-0145--Rotation.png" /></a></p>
<pre><code class="gd">extends Sprite2D
var speed = 400
var angular_speed = PI
func _init():
print("Hello, world!")
func _process(delta):
rotation += angular_speed * delta
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 サンプル通り書いてみよう。 くるくる回ってるぜ」</p>
<h2 id="時間軸の1つ分の処理: _process(delta)"><a href="#%E6%99%82%E9%96%93%E8%BB%B8%E3%81%AE%EF%BC%91%E3%81%A4%E5%88%86%E3%81%AE%E5%87%A6%E7%90%86%EF%BC%9A%E3%80%80_process%28delta%29">時間軸の1つ分の処理: _process(delta)</a></h2>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>func _process(delta):</code> メソッドは 時間 delta 分の処理なんだ」</p>
<h2 id="Tips: Ctrl + Click"><a href="#Tips%3A+Ctrl+%2B+Click">Tips: Ctrl + Click</a></h2>
<p><a href="https://crieit.now.sh/upload_images/aa78c037ac0389d5c9bc1824581f2b4465170065e891a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/aa78c037ac0389d5c9bc1824581f2b4465170065e891a.png?mw=700" alt="202309__godot__30-0149--CtrlClick-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Ctrl</code> キーを押しながら コードをクリックすると 説明が出てきたり、定義に飛んだりするようだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 そんな裏技仕込むの 止めてほしいわね」</p>
<h2 id="洗濯機の中の衣類のように周る"><a href="#%E6%B4%97%E6%BF%AF%E6%A9%9F%E3%81%AE%E4%B8%AD%E3%81%AE%E8%A1%A3%E9%A1%9E%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%91%A8%E3%82%8B">洗濯機の中の衣類のように周る</a></h2>
<pre><code class="gd">extends Sprite2D
var speed = 400
var angular_speed = PI
func _init():
print("Hello, world!")
func _process(delta):
# その場で ねずみ花火のように くるくる回る
rotation += angular_speed * delta
# 洗濯機の中の衣類のように 周る
var velocity = Vector2.UP.rotated(rotation) * speed
position += velocity * delta
</code></pre>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1707801968616550478?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 分かったぜ」</p>
<h1 id="入力"><a href="#%E5%85%A5%E5%8A%9B">入力</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👇 次の課題は 入力よ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/getting_started/step_by_step/scripting_player_input.html">プレイヤーの入力を聞く</a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 入力のインプットを受け取る方法は 2種類あって、<br />
<code>Input</code> シングルトンを使う方法と、 <code>_unhandled_input()</code> コールバック関数を使う方法があるようだぜ」</p>
<pre><code class="gd">extends Sprite2D
var speed = 400
var angular_speed = PI
func _init():
print("Hello, world!")
func _process(delta):
# その場で ねずみ花火のように くるくる回る
rotation += angular_speed * delta
# 洗濯機の中の衣類のように 周る
var velocity = Vector2.UP.rotated(rotation) * speed
var movement = velocity * delta
# 何も押さなければその場で回転
var direction = 0
# 左キー押下で頭上の方へ進む
if Input.is_action_pressed("ui_left"):
direction = -1
# 右キー押下で足下の方へ進む
if Input.is_action_pressed("ui_right"):
direction = 1
movement *= direction
# 移動ベクトルを足す
position += movement
</code></pre>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1707956784898646248?s=20">動画</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 分かったぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/29befd42d7210ed69b9a1b70f6752dc465179e8c10f1f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/29befd42d7210ed69b9a1b70f6752dc465179e8c10f1f.png?mw=700" alt="202309__godot__30-1304--inputMap-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <strong>プロジェクト設定</strong> の <strong>インプットマップ</strong> タブを見れば <code>Input.is_action_pressed()</code> メソッドの引数に何書いたらいいか<br />
自分で調べられるそうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 助かるぜ」</p>
<pre><code class="gd">extends Sprite2D
var speed = 400
var angular_speed = PI
func _init():
print("Hello, world!")
func _process(delta):
var velocity = Vector2.ZERO
# 上キーを押していなければ進まない仕組み
if Input.is_action_pressed("ui_up"):
velocity = Vector2.UP.rotated(rotation) * speed
# その場で ねずみ花火のように くるくる回る
rotation += angular_speed * delta
# 洗濯機の中の衣類のように 周る
var movement = velocity * delta
# 何も押さなければその場で回転
var direction = 0
# 左キー押下で頭上の方へ進む
if Input.is_action_pressed("ui_left"):
direction = -1
# 右キー押下で足下の方へ進む
if Input.is_action_pressed("ui_right"):
direction = 1
movement *= direction
# 移動ベクトルを足す
position += movement
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 上キーを押していなければ 進まないという仕組みも追加したぜ」</p>
<h1 id="Godot の言うシグナル: イベントハンドラーみたいなもん"><a href="#Godot+%E3%81%AE%E8%A8%80%E3%81%86%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%EF%BC%9A%E3%80%80%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%83%BC%E3%81%BF%E3%81%9F%E3%81%84%E3%81%AA%E3%82%82%E3%82%93">Godot の言うシグナル: イベントハンドラーみたいなもん</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👇 次の課題は シグナル(Signal;信号)よ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/getting_started/step_by_step/signals.html">シグナルの使用</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 イベントハンドラーじゃないのかだぜ? Linux みたいだな」</p>
<p><a href="https://crieit.now.sh/upload_images/99baf2fc25b81d2b4454f7d6714e42546517a4ae6c418.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/99baf2fc25b81d2b4454f7d6714e42546517a4ae6c418.png?mw=700" alt="202309__godot__30-1331--NewScene-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 新しいシーンを作れとのことだぜ。 シーンって何なんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 サブツリーのルートノード(Root Node;根)なんじゃないか?</p>
<p><a href="https://crieit.now.sh/upload_images/4f13481d8de1a65c0cac3a780c634a436517a5507a118.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4f13481d8de1a65c0cac3a780c634a436517a5507a118.png?mw=700" alt="202309__godot__30-1333--RootNode-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👆 シーンは サブツリーなのよ。 サブツリーのルートをさらに選ぶのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 シーンなんて用語 造語されたら ぐちゃぐちゃだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/a22c3b41e3c53784f790b75fec6b4f0c6517a5ff240a4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a22c3b41e3c53784f790b75fec6b4f0c6517a5ff240a4.png?mw=700" alt="202309__godot__30-1336--2DScene-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>2D シーン</code> を選べとのことだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/f6006ebcdbdaea3a731e81340cdd49196517a668cf652.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f6006ebcdbdaea3a731e81340cdd49196517a668cf652.png?mw=700" alt="202309__godot__30-1338--Node2DRoot-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 なんで <code>2D シーン</code> を選んで、出てくるのが <code>Node2D</code> なんだぜ? 技術的に ぐちゃぐちゃだな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 べつに 技術をウリにしてないんだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/0bf11477147a15aebd932108aa9843a46517a74fb3b22.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0bf11477147a15aebd932108aa9843a46517a74fb3b22.png?mw=700" alt="202309__godot__30-1342--AddChildNode-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 子ノードとして <code>Button</code> を追加しろとのことだぜ」</p>
<p><code>Node/CanvasItem/Control/BaseButton/Button</code></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 なんか クラス階層図みたいなツリー構造だな。 <code>BaseButton</code> の下に <code>Button</code> が出てくるの カッコ悪いよな」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 みたい、じゃなくて、クラス階層図なんじゃない?」</p>
<p><a href="https://crieit.now.sh/upload_images/4ca275d7f406ce30952797a9881296166517a86d669a7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4ca275d7f406ce30952797a9881296166517a86d669a7.png?mw=700" alt="202309__godot__30-1347--ButtonSubTree.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 あれっ? きふわらべ どこに行ったんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 お父んの方が 別のサブツリーに行ったんだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 だいたい わかった」</p>
<p><a href="https://crieit.now.sh/upload_images/e58955b63e12b4eeed2b796d5867e0976517a9bfc0a76.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e58955b63e12b4eeed2b796d5867e0976517a9bfc0a76.png?mw=700" alt="202309__godot__30-1351--ButtonLabel-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 フォント・サイズはどこで変えれるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 Godot は ノードを主張してるくせに <code>Button</code> のサブ・ノードが見えないじゃない」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 べつに 技術をウリにしてないんだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 もう 先々 苦労しそうだな」</p>
<p><a href="https://crieit.now.sh/upload_images/b859aa8fe93be25c91b7fd1aa0349a746517aacdc271b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b859aa8fe93be25c91b7fd1aa0349a746517aacdc271b.png?mw=700" alt="202309__godot__30-1357--F6Key.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 <code>F6</code> キーを打鍵すると サブツリーを 動作テストできるそうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 そんな裏技仕込むの 止めてほしいわね」</p>
<p><a href="https://crieit.now.sh/upload_images/a26a07191c5b071b3095a61455d0c8516517abf3bffd6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a26a07191c5b071b3095a61455d0c8516517abf3bffd6.png?mw=700" alt="202309__godot__30-1401--NodeSignal-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 <code>ノード</code> タブをクリックすると シグナルの一覧が出てくるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 お前は <strong>インスペクター</strong> なんじゃないの?<br />
なんで インスペクターの隣の <strong>ノード</strong> タブをクリックしたんだぜ?<br />
ノード タブは、インスペクターじゃないってのかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ノード タブは インスペクター じゃないのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot の国語は ぐちゃぐちゃ だな。技術的にクソだ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 べつに 国語も 技術も ウリにしてないんだろ」</p>
<p><a href="https://crieit.now.sh/upload_images/1a87f1b891e9098385263a910011c31b6517ad1f459da.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1a87f1b891e9098385263a910011c31b6517ad1f459da.png?mw=700" alt="202309__godot__30-1406--pressed-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 <code>BaseButton</code> の下に <code>pressed()</code> メソッドがあるから ダブル・クリックしろだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>pressed()</code> は メソッドなの? シグナルなの?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 <code>pressed()</code> メソッドは <code>pressed</code> メッセージが送られてきたときに実行されるイベントハンドラーなんじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 本当にそうだろうか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d0842a41d7e9ab37b679a9c8bdd5b7126517aeaa021fe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d0842a41d7e9ab37b679a9c8bdd5b7126517aeaa021fe.png?mw=700" alt="202309__godot__30-1413--cutAndPaste-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 きふわらべが 別のサブツリーに居て アクセスできなかったので、<br />
カット&ペーストで 連れてきたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 じゃあ 元 居たツリーは 今 どうなってんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/6a399bc7533aade13f12f764ec4068fe6517af1e7eaf0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6a399bc7533aade13f12f764ec4068fe6517af1e7eaf0.png?mw=700" alt="202309__godot__30-1415--emptyTree.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 エンプティセット(Empty Set;空集合,くうしゅうごう)だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 保存はできるのか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 不思議な話だが、エンプティセットは 保存できないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ウィンドウを閉じれば 同値よ」</p>
<p><a href="https://crieit.now.sh/upload_images/27ed21a44294aba69a62282080a3e4226517b28e975af.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/27ed21a44294aba69a62282080a3e4226517b28e975af.png?mw=700" alt="202309__godot__30-1429--signal-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 センダー(Sender;送信者)である BaseButton の <code>pressed()</code> メソッドが呼び出されたとき、<br />
さらに レシーバー(Receiver;受信者)である Sprite2D の <code>_on_button_pressed</code> メソッドが呼び出される」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 と考えたらいいんじゃないかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 シグナルは どこにあんのよ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot の開発者たちは 国語のセンスがないことが分かった。わたしが 言い換えてやるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/bdf08988dc220681738ec431998dedeb6517b43438745.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bdf08988dc220681738ec431998dedeb6517b43438745.png?mw=700" alt="202309__godot__30-1436--eventHandler-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 わたしのコードに イベントハンドラーが 勝手に追加されたぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 じゃあ そこに ボタンが押されたときに やりたい処理を書けばいいのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/1b59db21bf318cbc6210dba1942042116517b4da4112d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1b59db21bf318cbc6210dba1942042116517b4da4112d.png?mw=700" alt="202309__godot__30-1436--eventHandler-o3o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 イベントハンドラーのシグネチャーの左横に 緑色の矢印が表示されていて、クリックできるそうだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/475243ba585fc69677ea7b372cce6f066517b53a0dc81.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/475243ba585fc69677ea7b372cce6f066517b53a0dc81.png?mw=700" alt="202309__godot__30-1441--connection.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 説明が出てきた。まあ そうなんだろうな」</p>
<pre><code class="gd">func _on_button_pressed():
# 働いてたら休む。
# 休んでたら働く。
set_process(not is_processing())
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ボタンを押下したときのコードを サンプルに従って書いたぜ。<br />
メソッド名が悪いよな。意味が分からん。まあ Godot は、国語がウリではないから 仕方ない」</p>
<p><a href="https://crieit.now.sh/upload_images/2ee823104a0e92408e6e199ef46551826517b6cd8c024.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2ee823104a0e92408e6e199ef46551826517b6cd8c024.png?mw=700" alt="202309__godot__30-1448--run.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 あれっ? ボタンが無いぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 エンプティセットを保存してないから、古いサブツリーを実行しているのでは?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 実行ボタンをクリックしたときに実行される サブツリー は、どこで変更できる?」</p>
<p><a href="https://crieit.now.sh/upload_images/04be6e51c0bb8bdaf1852ebfec8b9f126517b80f7cc83.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/04be6e51c0bb8bdaf1852ebfec8b9f126517b80f7cc83.png?mw=700" alt="202309__godot__30-1453--applicationRun.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 プロジェクト設定の中を探していけば あるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/c17285e0414e680f05bac7104e07b5546517b856121d7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c17285e0414e680f05bac7104e07b5546517b856121d7.png?mw=700" alt="202309__godot__30-1455--run.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 よしでけた」</p>
<h1 id="Ctrl + F1"><a href="#Ctrl+%2B+F1">Ctrl + F1</a></h1>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 エディターに戻って <code>Ctrl + F1</code> キーを押してみろだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/c69d8e288cdddacee1e04b1d561688d06517bd9322f97.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c69d8e288cdddacee1e04b1d561688d06517bd9322f97.png?mw=700" alt="202309__godot__30-1517--CtrlF7.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 お前が出てきたけど……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ルートに戻ったんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 メイン・シーンの方に戻ってほしいぜ」</p>
<h1 id="Timer"><a href="#Timer">Timer</a></h1>
<p><a href="https://crieit.now.sh/upload_images/e43a695421dbe4546c001fc1af7372796517bee511c38.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e43a695421dbe4546c001fc1af7372796517bee511c38.png?mw=700" alt="202309__godot__30-1522--Timer-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 サンプルに従って タイマーを追加するぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/79f0e556a695b23730a04ea3079a7d636517bf3fe9c6e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/79f0e556a695b23730a04ea3079a7d636517bf3fe9c6e.png?mw=700" alt="202309__godot__30-1524--AutoStart-o2o0.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 Autostart をオンに設定」</p>
<p><a href="https://crieit.now.sh/upload_images/380aefc0bfd1d42c51a0c6b20163b6ef6517c0752e112.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/380aefc0bfd1d42c51a0c6b20163b6ef6517c0752e112.png?mw=700" alt="202309__godot__30-1530--ScriptButton.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👆 上図のボタンをクリックすると スクリプトのページが開くそうだぜ」</p>
<pre><code class="gd">extends Sprite2D
var speed = 400
var angular_speed = PI
func _init():
print("Hello, world!")
func _process(delta):
var velocity = Vector2.ZERO
# 上キーを押していなければ進まない仕組み
if Input.is_action_pressed("ui_up"):
velocity = Vector2.UP.rotated(rotation) * speed
# その場で ねずみ花火のように くるくる回る
rotation += angular_speed * delta
# 洗濯機の中の衣類のように 周る
var movement = velocity * delta
# 何も押さなければその場で回転
var direction = 0
# 左キー押下で頭上の方へ進む
if Input.is_action_pressed("ui_left"):
direction = -1
# 右キー押下で足下の方へ進む
if Input.is_action_pressed("ui_right"):
direction = 1
movement *= direction
# 移動ベクトルを足す
position += movement
func _on_button_pressed():
# 働いてたら休む。
# 休んでたら働く。
set_process(not is_processing())
# サブツリーが全てインスタンス化されたときに呼び出される
func _ready():
# タイマーノード取得
var timer = get_node("Timer")
# timer ソースの timeout シグナルに _on_timer_timerout メソッドを接続
timer.timeout.connect(_on_timer_timeout)
func _on_timer_timeout():
# 可視性を反転
visible = not visible
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 全部のコード載せたろ」</p>
<p>📺 <a target="_blank" rel="nofollow noopener" href="https://x.com/muzudho1/status/1708008555952132115?s=20">動画</a></p>
<h1 id="カスタムシグナル"><a href="#%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB">カスタムシグナル</a></h1>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 👇 シグナルを自作する方法の解説も載ってるわよ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/getting_started/step_by_step/signals.html#custom-signals">カスタムシグナル</a></p>
<h1 id="このあと"><a href="#%E3%81%93%E3%81%AE%E3%81%82%E3%81%A8">このあと</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 このあとも チュートリアルは続くが、洋ゲーなんで 興味無いんで スキップする!」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 よっしゃ!」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 じゃあ 本題へ戻りましょう</p>
<h1 id="親記事へ戻る"><a href="#%E8%A6%AA%E8%A8%98%E4%BA%8B%E3%81%B8%E6%88%BB%E3%82%8B">親記事へ戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="以下、独習"><a href="#%E4%BB%A5%E4%B8%8B%E3%80%81%E7%8B%AC%E7%BF%92">以下、独習</a></h1>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html">GDScript reference</a></p>
<h2 id="列挙型"><a href="#%E5%88%97%E6%8C%99%E5%9E%8B">列挙型</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 Godot に 列挙型は有るのかだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 書き方がいくつか有るようだぜ。これを読んで分かるか?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#enums">Enum</a></p>
<pre><code class="gd">enum State {STATE_IDLE, STATE_JUMP = 5, STATE_SHOOT}
func _ready():
# Access values with Name.KEY, prints '5'
print(State.STATE_JUMP)
# Use constant dictionary functions
# prints '["STATE_IDLE", "STATE_JUMP", "STATE_SHOOT"]'
print(State.keys())
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あとは 調べてみるぜ」</p>
<h2 id="別ファイルで定義した列挙型をインポートするには?"><a href="#%E5%88%A5%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%E5%88%97%E6%8C%99%E5%9E%8B%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F">別ファイルで定義した列挙型をインポートするには?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 別ファイルで定義した列挙型をインポートするには どうやったらいいんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 書き方がいくつか有るようだぜ。これを読んで分かるか?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.reddit.com/r/godot/comments/jfdxke/how_to_export_an_enum_and_import_to_another_script/">How to export an enum and import to another script</a></p>
<pre><code class="gd"># Author: samsfacee
# state_machine.gd
extends Node2D
class_name StateMachine
enum State { STATE_STANDING, STATE_JUMPING, STATE_DUCKING, STATE_DIVING}
# player.gd
var state = StateMachine.State.STATE_STANDING
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 クラスに名前を付けて グローバルに公開するのか。それ以外の方法は?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://ask.godotengine.org/40827/how-to-declare-a-global-named-enum">How to declare a global named enum?</a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 <code>preload</code> を使う方法がありそうだぜ」</p>
<pre><code class="gd"># Author: Zylann
const MyNamedEnum = preload("path/to/MyNamedEnum.gd")
func _ready():
print(MyNamedEnum.TYPE1)
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あとは 調べてみるぜ」</p>
<h2 id="別ファイルで定義されたクラスを生成するには?"><a href="#%E5%88%A5%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%9F%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F">別ファイルで定義されたクラスを生成するには?</a></h2>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 別ファイルで定義されたクラスを生成するには どうやったらいいんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 この記事が参考になるかだぜ?」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://ask.godotengine.org/80159/instantiating-object-class_name-differs-preload-functions">class_nameを使用した新しいオブジェクトのインスタンス化は、preload()関数やload()関数とは異なりますか?</a></p>
<p>Question: Robotex<br />
Answer: klaas</p>
<p>あるファイルでクラスを定義:</p>
<pre><code class="gd">extends Object
class_name MyClass
</code></pre>
<p>生成方法1:</p>
<pre><code class="gd"># 名前付きスクリプトは起動時にグローバルに登録されます。
var obj = MyClass.new()
</code></pre>
<p>生成方法2:</p>
<pre><code class="gd"># プリロードされたスクリプトは、コンパイル時にクラスの var または const にロードされます。
# これらはグローバルにアクセス可能ではありません。
var MyClass = preload("MyClass.gd")
var obj = MyClass.new()
</code></pre>
<p>生成方法3:</p>
<pre><code class="gd"># ロードされたスクリプトは、実行時にクラス変数にロードされます。
# これらはグローバルにアクセス可能ではありません。
var MyClass = load("MyClass.gd")
var obj = MyClass.new()
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 あとは 調べてみるぜ」</p>
<p>.</p>
むずでょ
tag:crieit.net,2005:PublicArticle/18582
2023-09-28T20:17:51+09:00
2023-09-29T23:56:13+09:00
https://crieit.net/posts/Godot-651560df0073e
まとめ記事 Godot のデモ・プロジェクトを見ていこうぜ(^~^)?
<h1 id="親の記事から来た"><a href="#%E8%A6%AA%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%8B%E3%82%89%E6%9D%A5%E3%81%9F">親の記事から来た</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👇 Godot (ゴドー)のデモ・プロジェクトは、以下のレポジトリ―に置かれているぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/godotengine/godot-demo-projects">godotengine/godot-demo-projects</a></p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 Godot のポータルは 取っ散らかっていて <strong>入り口にドアが100個ぐらいあり用事の無い部屋に入ってしまう</strong> という状況だが、<br />
初級者向けのドキュメントは <strong>Learn</strong> に あるぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/getting_started/first_2d_game/index.html">Godot Engine 4.2の日本語のドキュメント</a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 結論言うと う~ん洋ゲー畑 よ。 あんたたちの思ってる JRPG とも 同ソ とも違うから<br />
わたしたちは アウェーでマイナーよ。 端っこで 細々と やりなさい」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 インディーゲームを自称する人は好きそう。わたしは嫌い」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 2Dゲームの デモ・プロジェクトは いろいろ入っているが、どれから 見ていくんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/26abd0af4ce82242b357602c1da3fc9e65155a2c97ac9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/26abd0af4ce82242b357602c1da3fc9e65155a2c97ac9.png?mw=700" alt="202309_shogi_28-1947--ProjectManager.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 アルファベットの昇順で良くない?」</p>
<h1 id="bullet_shower"><a href="#bullet_shower">bullet_shower</a></h1>
<p>学習の難しさの目安: 初級者の上の方</p>
<p><a href="https://crieit.now.sh/upload_images/0f703136916a2f0c2008c5747f3ca78665155e4103848.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0f703136916a2f0c2008c5747f3ca78665155e4103848.png?mw=700" alt="202309__godot__28-2005--BulletShower.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 画面右側から パーティクル(粒)(※実際はPNG画像)が ゆっくり左へ移動してくるから、<br />
マウスポインターに追随する顔の絵を 粒に当たらないように 避けてあげましょう、という<br />
一種の弾幕ゲームのようなものだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 粒は PNG画像なんで、 <code>bullet.png</code> を大量に画面上にばら撒いたあと、<br />
時間経過とともに 粒が左へ動く、という書き方を <code>bullets.gd</code> ファイル1つで覚えることができるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 でも 初級者がソース見たら うわっ と思うわよ」</p>
<h1 id="dodge_the_creeps"><a href="#dodge_the_creeps">dodge_the_creeps</a></h1>
<p>学習の難しさの目安: 強い初級者 卒業レベル</p>
<p><a href="https://crieit.now.sh/upload_images/2475544ad04d6392c591b8188bf42d3a6515650bb44a9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2475544ad04d6392c591b8188bf42d3a6515650bb44a9.png?mw=700" alt="202309_godot_25-2033--dodge_the_creeps.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 音量がデカい。うるさい」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 キーボードのカーソルキーの上下左右を使って、目玉の化け物を<br />
気持ち悪い化け物に衝突しないように 逃がすゲームよ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 👇 このデモ・プロジェクトには ドキュメントがある。<br />
2Dゲームの作り方を覚えるための 最初の課題という位置づけのようだぜ」</p>
<p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.godotengine.org/ja/4.x/getting_started/first_2d_game/index.html">Godot Engine 4.2の日本語のドキュメント</a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 本当の初級者は これでも難しい。 強い初級者向けだぜ。<br />
部活で 気合が入ってるぐらいのやつが やるやつ」</p>
<h1 id="finite_state_machine"><a href="#finite_state_machine">finite_state_machine</a></h1>
<p>学習の難しさの目安: 中級者 情報処理やるやつ必修</p>
<p><a href="https://crieit.now.sh/upload_images/6c088224e4ec44b769d394181cefe31d651569394f0b5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6c088224e4ec44b769d394181cefe31d651569394f0b5.png?mw=700" alt="202309_godot_25-2052--finite-state-machine.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 有限オートマトンだぜ。 コンピューターを使う、あらゆる仕事で役に立つ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 状態遷移図を知ってるやつが見ると ソース すいすい読めるが、<br />
知らないやつが見ても ソース読めないだろうから、<br />
初級者向けとは 言い難い……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 デモ・プログラムであって、レッスン用のプログラムじゃないのよ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 Godot のスキル習得用の 階段状にステップアップしていける チュートリアルが欲しかったのに……」</p>
<h1 id="glow"><a href="#glow">glow</a></h1>
<p>学習の難しさの目安: 不明。マウスボタン押下でオブジェクトをずらしたい人向け。 ソースコードは短いが理解しがたい</p>
<p><a href="https://crieit.now.sh/upload_images/fa877c6268763e1bf71617e2528cc60465156d98d4252.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fa877c6268763e1bf71617e2528cc60465156d98d4252.png?mw=700" alt="202309_godot_25-2111--glow.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 マウスの任意のボタンを押下すると マウスポインターの移動に応じて<br />
洞窟が 水平方向に ずれてくれるという センスがよく分からんものだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 なんだか よく分からんデモねえ」</p>
<h1 id="hexagonal_map"><a href="#hexagonal_map">hexagonal_map</a></h1>
<p>学習の難しさの目安: 初級者の下の方。 眺めるのは簡単、理解するのは難しい</p>
<p><a href="https://crieit.now.sh/upload_images/ec3594af5e4393f3c7973ce9236ac096651573e56064e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ec3594af5e4393f3c7973ce9236ac096651573e56064e.png?mw=700" alt="202309__godot__28-2138--hexagonal-map.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 みんな大好き 6角形の升 ヘックスだぜ。<br />
キーボードの上下左右カーソルで ゴブリンをずらすことぐらいは できるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/cb2277a58949ecac08c5bb2d63a1b1f76515749f1e676.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cb2277a58949ecac08c5bb2d63a1b1f76515749f1e676.png?mw=700" alt="202309__godot__28-2141--hexagonal-map-editor.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 また、編集画面では 六角形のグリッドが付いているぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 エディターの下側の その タイルって どうやって出したの?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 最初から出ていた」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 緑の化け物は ゴブリンではなくて トロールのようだが、<br />
トロールを カーソルで移動する以外は ヘックスで マップを作ろうということだけ<br />
自分で勝手に覚えろといった感じだな」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 肝心の使い方は 分からん」</p>
<h1 id="instancing"><a href="#instancing">instancing</a></h1>
<p>学習の難しさの目安: 初級者の下の方。 早めに習得できるか</p>
<p><a href="https://crieit.now.sh/upload_images/cf2d67616a3c3e53f22f16a1044dc92f651578f5be463.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cf2d67616a3c3e53f22f16a1044dc92f651578f5be463.png?mw=700" alt="202309__godot__28-2159--instancing.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 インスタンシエートと言えば、ゲームの空間にオブジェクトを1つ生成することだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 マウスでクリックしたところに ボーリングの球のようなものが1個 新規作成されるぜ。<br />
物理計算が働いているようで、 コップの中に水をそそぐように どんどん 溜まっていくぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 やっぱり、インスタンシエートする手順を覚えることが 第一義 だと思うが、<br />
それにしても <code>*.tscn</code> ファイルが球の素(もと)となって 球を インスタンシエートするのは godot よく分からん、<br />
まあ ソース見てみろだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 それ以外のとこは 物理エンジンと コリジョン判定で押し切ってる感じかしらねえ」</p>
<h1 id="isometric"><a href="#isometric">isometric</a></h1>
<p>学習の難しさの目安: 初級者の下の方。 眺めるのは簡単、理解するのは難しい</p>
<p><a href="https://crieit.now.sh/upload_images/f08901216860c62b0d6f98a25eeb05e465157d5ec31ad.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f08901216860c62b0d6f98a25eeb05e465157d5ec31ad.png?mw=700" alt="202309__godot__28-2218--isometric.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 アイソメトリックというのは 誇張とか入ってなくて 線が 真面目に きっちり してるやつだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 その説明では 何を言わんとしているか 分からんな……」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 方眼紙っぽいやつよ」</p>
<p><a href="https://crieit.now.sh/upload_images/834a99920f681caa74a5afc30b097ebb65157e503195f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/834a99920f681caa74a5afc30b097ebb65157e503195f.png?mw=700" alt="202309__godot__28-2218--isometric-tileMap.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 編集画面で タイルマップを選べば クォータービュー用のグリッドも出てくるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 やっぱり 第一義は タイルマップの使い方を覚えることだと思うんだが……」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 肝心のタイルマップの使い方が分からないぜ」</p>
<h1 id="kinematic_character"><a href="#kinematic_character">kinematic_character</a></h1>
<p>学習の難しさの目安: 初級者の上の方</p>
<p><a href="https://crieit.now.sh/upload_images/42662b6ddcdfc12d670617d4acb55bc9651581bddfa05.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/42662b6ddcdfc12d670617d4acb55bc9651581bddfa05.png?mw=700" alt="202309__godot__28-2237--KinematicCharacter.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 キーボードの左右キーで移動、スペース・キーでジャンプする 白い箱を操って<br />
画面左上のピンクの箱を目指すアクションゲームだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 キネマティック(Kinematic)ってどういう意味?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 運動らしいんだが、なんのことだか分からないぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 坂とか 回転する円とか 上下に移動するリフトとかあるから、運動なんじゃないの?」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 アクション・ゲームの作り方かな。<br />
左右への移動と ジャンプのソースコードは 短くて 読みやすい」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 しかし海外の人は ステージとか マップのことを <code>level</code> って呼ぶんだな。<br />
ステージが入っているフォルダ―の名前が <code>level</code> だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 文化が違うのよ」</p>
<h1 id="light2d_as_mask"><a href="#light2d_as_mask">light2d_as_mask</a></h1>
<p>学習の難しさの目安: 不明。仕組みが分からんかった</p>
<p><a href="https://crieit.now.sh/upload_images/5e27c469d76e19ed179ae436244199b165158515776e4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5e27c469d76e19ed179ae436244199b165158515776e4.png?mw=700" alt="202309__godot__28-2251--Light2D_as_mask.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 マスクという機能を使えば 幕に穴を開けたみたいな効果があって、<br />
これを スポットライトみたいな演出に使えるという古典的なテクニックのデモだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>AnimationPlayer</code> というのを使って 画像を移動させてるんで<br />
それを見てもいいし」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 グレーの色が なんなのか 分からんかった」</p>
<h1 id="lights_and_shadows"><a href="#lights_and_shadows">lights_and_shadows</a></h1>
<p>学習の難しさの目安: 不明</p>
<p><a href="https://crieit.now.sh/upload_images/d9120cd9c415e47fb7e0b2ccf3a24bc5651586e3cda3c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d9120cd9c415e47fb7e0b2ccf3a24bc5651586e3cda3c.png?mw=700" alt="202309__godot__28-2259--LightsAndShadows.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 光源が勝手に移動するんで、光沢と陰影を眺めるデモだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/3be3b15978d58475877129d077f821d0651587a7c82de.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3be3b15978d58475877129d077f821d0651587a7c82de.png?mw=700" alt="202309__godot__28-2302--DirectionalLight.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 キーボードの <code>d</code> キーを打鍵すると 光源が指向性を持つぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/c3421f6c3fc250ad014e986b529ae56e6515882a1e2b0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c3421f6c3fc250ad014e986b529ae56e6515882a1e2b0.png?mw=700" alt="202309__godot__28-2305--PointLights.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 キーボードの <code>p</code> キーを打鍵すると 光が消えてしまったぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>s</code> キーと <code>h</code> キーにも何か仕掛けがあるようだが、 光がボヤっとしたり しゃきっとしたり ぐらいで<br />
わたしには 分からん」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 画面上にテキストを置くための ラベル を覚えたり」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ライトの可視性(Visible)を オンにしたり、オフにしたりするところが 見所じゃないか?」</p>
<h1 id="navigation"><a href="#navigation">navigation</a></h1>
<p>学習の難しさの目安: 実行不能</p>
<p><a href="https://crieit.now.sh/upload_images/cf0f0ffe52ba6d5dc95f993d1512844565158c8051044.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cf0f0ffe52ba6d5dc95f993d1512844565158c8051044.png?mw=700" alt="202309__godot__28-2323--Navigation.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 コンパイル・エラーで動かなかったぜ」</p>
<h1 id="navigation_astar"><a href="#navigation_astar">navigation_astar</a></h1>
<p>学習の難しさの目安: 上級者</p>
<p><a href="https://crieit.now.sh/upload_images/ba1f73e3a33e4640dc26ea20db16924265158a3c59416.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ba1f73e3a33e4640dc26ea20db16924265158a3c59416.png?mw=700" alt="202309__godot__28-2313--ASterArgorithm.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 これは 有名な エー・スター・アルゴリズム(A* argorithum)だぜ。<br />
マウスで 升をクリックすれば、最短距離の道筋を示して 移動してくれるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 画面上のクリックした位置の取り方とかかな」</p>
<h1 id="particles"><a href="#particles">particles</a></h1>
<p>学習の難しさの目安: 上級者</p>
<p><a href="https://crieit.now.sh/upload_images/3e2bc68318ebe9e94c86f022fcdf913e65158d475d6e5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3e2bc68318ebe9e94c86f022fcdf913e65158d475d6e5.png?mw=700" alt="202309__godot__28-2326--Particles.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 パーティクル(粒)のデモだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 スペース・キーを打鍵すると 一時停止するぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 上キー、下キー、 <code>g</code> キーを打鍵しても 細かな違いが出るが わたしには分からん」</p>
<p><a href="https://crieit.now.sh/upload_images/fb98a65035d96708704b7dd268640dea65158e41010d5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fb98a65035d96708704b7dd268640dea65158e41010d5.png?mw=700" alt="202309__godot__28-2331--ParticleTrails.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>t</code> キーを打鍵すると 粒が尾を引くぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 粒を飛ばせば 炎に見えたり、液体に見えたり、煙に見えたり、応用範囲が広いやつだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 パーティクルは プログラム要らずで <strong>インスペクター</strong> ビューの設定を適当にいじれば<br />
適当に振る舞いが変わることを 覚えるぐらいかな」</p>
<h1 id="physics_platformer"><a href="#physics_platformer">physics_platformer</a></h1>
<p>学習の難しさの目安: 上級者</p>
<p><a href="https://crieit.now.sh/upload_images/36f4b557f2b0875868a2127cee8f527d65158fcaa8468.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/36f4b557f2b0875868a2127cee8f527d65158fcaa8468.png?mw=700" alt="202309__godot__28-2337--PhysicsPlatformer.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 BGMがバカでかい! うるさい!」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ロックマンみたいな アクション・ゲームだぜ。<br />
<code>A</code>、 <code>D</code>、<code>W</code> キーで 左右移動とジャンプ、スペース・キーで重力に従う球 発射だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ステージ上のコインを全部取っても 何も起きないわよ!」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 プラットフォーム(Platform)って、移動する足場のことなんだ、へぇ、みたいな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 難しくて 分からんかったか」</p>
<h1 id="physics_tests"><a href="#physics_tests">physics_tests</a></h1>
<p><a href="https://crieit.now.sh/upload_images/ed5fdba14768d5b484269431068f7ad76516b281c12c3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ed5fdba14768d5b484269431068f7ad76516b281c12c3.png?mw=700" alt="202309__godot__29-2017--PhysicsTests.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 物理演算のテストじゃないか?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>R</code> キーを打鍵すると もう1回テストするぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/e7b3632c123d10105c455cce8abe550d6516b324b05fa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e7b3632c123d10105c455cce8abe550d6516b324b05fa.png?mw=700" alt="202309__godot__29-2020--BoxStack.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 左上の <code>TESTS</code> のボタンから いろいろ選べる。これは 詰まれた箱を眺めるテストだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/9847d5ddf4b3b5ad16e64b687bf80e1f6516b39a6a63a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9847d5ddf4b3b5ad16e64b687bf80e1f6516b39a6a63a.png?mw=700" alt="202309__godot__29-2022--BoxPyramid.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ピラミッド状にも積むテスト」</p>
<p><a href="https://crieit.now.sh/upload_images/d973f3cdb6bf60436e348db5519dc21c6516b47a34ea6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d973f3cdb6bf60436e348db5519dc21c6516b47a34ea6.png?mw=700" alt="202309__godot__29-2026--Collision.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 直方体をぶつけるテストだぜ。明るい緑色になってるやつは 当たってるぜ。<br />
直方体の形も いくつかの中から選べるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/e71270b8dda511422bd209a4f8ce469d6516b757dbd29.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e71270b8dda511422bd209a4f8ce469d6516b757dbd29.png?mw=700" alt="202309__godot__29-2035--CharacterSlopes.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 縦長の楕円みたいなカプセルを <code>A</code>、<code>D</code>、<code>W</code> キーを使って操作して、坂道を昇り降りするテストだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/e52e61eef525841880c2b62f0220f0046516d95dd13c2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e52e61eef525841880c2b62f0220f0046516d95dd13c2.png?mw=700" alt="202309__godot__29-2303--CharacterTileMap.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Tilemap</code> は、タイルでステージが作られてるな。キーボードを打鍵して、このステージで長方形のキャラクターを操作するテストだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/6707fb0d0c89fdee379e491a774ce5056516d9e0c4528.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6707fb0d0c89fdee379e491a774ce5056516d9e0c4528.png?mw=700" alt="202309__godot__29-2306--CharacterPixels.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Pixels</code> も 長方形を操作するテスト」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>One way Collision</code> というテストは強制終了して落ちた」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 テストを繰り返したあと PC をスリープしたのがダメなのでは」</p>
<p><a href="https://crieit.now.sh/upload_images/a63249afab62d961b879d7248e44b9536516dab3c2d20.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a63249afab62d961b879d7248e44b9536516dab3c2d20.png?mw=700" alt="202309__godot__29-2309--OneWayCollision.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 起動したけど 意味分からん。説明不能」</p>
<p><a href="https://crieit.now.sh/upload_images/28c25c0ad2ffe0bcc04350bb6ad4dae06516db37e3a93.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/28c25c0ad2ffe0bcc04350bb6ad4dae06516db37e3a93.png?mw=700" alt="202309__godot__29-2311--Joints.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Joints</code> 。マウスで オブジェクトを引きずることができて、鎖みたいにつながってるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 つながり方も ゴムみたいなやつとか 選べたり、<br />
2つのオブジェクトは ぶつかるかどうかも 設定できるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d4598e22155bd6cee2ba9dc48f0b3e466516dbf358b23.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d4598e22155bd6cee2ba9dc48f0b3e466516dbf358b23.png?mw=700" alt="202309__godot__29-2314--Raycasting.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Raycasting</code> は、直線上に見えない球を飛ばして ぶつかるポイントを調べるやつだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/74dd6d33b947b483fcf84d53e1be84fc6516dc51b9db1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/74dd6d33b947b483fcf84d53e1be84fc6516dc51b9db1.png?mw=700" alt="202309__godot__29-2316--PerformanceTest.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 その他に パフォーマンス・テストがあるが 何やってるか さっぱり」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 GDScript がいっぱい入っているが どれも見る気が起きない」</p>
<h1 id="platformer"><a href="#platformer">platformer</a></h1>
<p><a href="https://crieit.now.sh/upload_images/00e1f9465f7105bcdf04672dbb3ee0dd6516dd48a3705.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/00e1f9465f7105bcdf04672dbb3ee0dd6516dd48a3705.png?mw=700" alt="202309__godot__29-2320--Platformer.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 BGMがバカでかい! うるさい!」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 ロックマンみたいな アクション・ゲームだぜ。<br />
<code>A</code>、 <code>D</code>、<code>W</code> キーで 左右移動とジャンプ、スペース・キーで重力に従う球 発射だぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 ステージ上のコインを全部取っても 何も起きないわよ!」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 プラットフォーム(Platform)って、移動する足場のことなんだ、へぇ、みたいな」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 難しくて 分からんかったか」</p>
<h1 id="pong"><a href="#pong">pong</a></h1>
<p>学習の難しさの目安: 初級者の真ん中の方</p>
<p><a href="https://crieit.now.sh/upload_images/d81d135f4de480e8a4a6d1bdeddb8d336516ddcb226fe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d81d135f4de480e8a4a6d1bdeddb8d336516ddcb226fe.png?mw=700" alt="202309__godot__29-2322--Pong.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 ビデオゲーム史に出てくる お金を入れて遊ぶアーケードゲームのようなやつの 最初のやつだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 左の水色の板(※パドル)はキーボードの <code>W</code>、<code>S</code> キーで上下に動かす。<br />
右の赤紫の板はキーボードのカーソルの 上下キーで上下に動かすぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 パドルを上下に動かす GDScript とかが簡単かなあ」</p>
<h1 id="role_playing_game"><a href="#role_playing_game">role_playing_game</a></h1>
<p>学習の難しさの目安: 実行不能</p>
<p><a href="https://crieit.now.sh/upload_images/c39db2443eb67e0eed2b4358f726e1736516df69f3ed4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c39db2443eb67e0eed2b4358f726e1736516df69f3ed4.png?mw=700" alt="202309__godot__29-2329--RolePlayingGame.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 さっぱり分からん。バカにしてんのか?」</p>
<p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br />
「 <code>A</code>、<code>S</code>、<code>D</code>、<code>W</code> キーには反応するみたいだけど、何だか分かんないわね」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/abb508379beed8cb6c1dd5150896587d6516dfe07219b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/abb508379beed8cb6c1dd5150896587d6516dfe07219b.png?mw=700" alt="202309__godot__29-2331--RolePlayingGame-Error.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 エディターはエラーを吐いていて 直し方が分からん」</p>
<h1 id="screen_space_shaders"><a href="#screen_space_shaders">screen_space_shaders</a></h1>
<p>学習の難しさの目安: 初級者の真ん中の方</p>
<p><a href="https://crieit.now.sh/upload_images/c19ccc95b505bb0c7f8d52333fdbc1396516e0b5b4019.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c19ccc95b505bb0c7f8d52333fdbc1396516e0b5b4019.png?mw=700" alt="202309__godot__29-2335--ScreenSpaceShaders.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 フォトショップの画像エフェクトみたいなやつを テストできるやつだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/b37b738ba2020f2ab06fcde9c500de176516e0f9447b0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b37b738ba2020f2ab06fcde9c500de176516e0f9447b0.png?mw=700" alt="202309__godot__29-2336--Sepia.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 いろいろあるようだから、勝手に試せだぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 <code>.gdshader</code> というスクリプトが入っていて、シェーダーの書き方が分かるぜ」</p>
<h1 id="skeleton"><a href="#skeleton">skeleton</a></h1>
<p>学習の難しさの目安: 実行不能</p>
<p><a href="https://crieit.now.sh/upload_images/7869f632f9b93ba37dba3f112349f86f6516e1dd854cb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7869f632f9b93ba37dba3f112349f86f6516e1dd854cb.png?mw=700" alt="202309__godot__29-2340--Skeleton.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 なんのこっちゃ、という感じ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/96f2c7c52e049eb61b5e3bb4aba8526f6516e23ba93a9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96f2c7c52e049eb61b5e3bb4aba8526f6516e23ba93a9.png?mw=700" alt="202309__godot__29-2341--Skeleton-Error.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 実行するとエラーが出ていて分からない」</p>
<h1 id="sprite_shaders"><a href="#sprite_shaders">sprite_shaders</a></h1>
<p><a href="https://crieit.now.sh/upload_images/1e2704d06129dfc26af28c42207a84726516e2bda857e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1e2704d06129dfc26af28c42207a84726516e2bda857e.png?mw=700" alt="202309__godot__29-2343--SpriteShaders.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 なんのこっちゃ、という感じ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/34f2f762576fa52ba3ebb3263a8838176516e31a978d1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/34f2f762576fa52ba3ebb3263a8838176516e31a978d1.png?mw=700" alt="202309__godot__29-2345--SpriteShader-Editor.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 スプライトに表示の効果を付けれるみたいなんだが、その説明を わたしが欲しい」</p>
<h1 id="tween"><a href="#tween">tween</a></h1>
<p><a href="https://crieit.now.sh/upload_images/23c934f84a34eb57a30d8490f48700666516e3939b35b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/23c934f84a34eb57a30d8490f48700666516e3939b35b.png?mw=700" alt="202309__godot__29-2347--Tween.png" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 👆 <code>Start Animation</code> ボタンを押すことで モーションが見れるぜ」</p>
<p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br />
「 このデモ・プロジェクトからは 何を学べるんだぜ?」</p>
<p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br />
「 GDScript に何か たくさん書いてあるので、モーションの作り方が書いてるかも知れないな」</p>
<h1 id="親の記事に戻る"><a href="#%E8%A6%AA%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AB%E6%88%BB%E3%82%8B">親の記事に戻る</a></h1>
<p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p>
むずでょ