[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/24 21:54 / Filesize : 236 KB / Number-of Response : 1008
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【軽量】godot engine【無料】 part4



1 名前:名前は開発中のものです。 mailto:sage [2024/07/31(水) 07:46:19.20 ID:fxP1vISb.net]
Godotエンジンは機能豊富な、クロスプラットフォームのゲームエンジンであり、2D・3Dゲームを単一のインターフェイスで製作することができます。
基本的なツールは一通り用意され、ユーザーはプログラムの再発明をすることなくゲーム製作に集中できます。
製作したゲームは主要なデスクトップ環境(Linux, MacOS, Windows)や、モバイル(Android, iOS)、Webベース(HTML5)環境にワンクリックで書き出せます。

GodotはMITライセンスの下、完全に自由でオープンソースです。
利用に関して特に制限はありませんし、利用料を請求することもありません。
エンジンのコードの最後の一行まで、ゲームは製作したユーザーのものです。
Godotは自主的なコミュニティによって開発されており、エンジンを期待にかなうものにするため、ユーザーの方々も自由に参加できます。
Godotは非営利団体Software Freedom Conservancyによって支援されております。

■公式サイト
https://godotengine.org/
■コミュニティ
https://godotengine.org/community/
■ドキュメント
https://docs.godotengine.org/ja/4.x/
★次スレは>>950がたててください
前スレ
【軽量】godot engine【無料】 part3
https://mevius.5ch.net/test/read.cgi/gamedev/1708131114/

758 名前:名前は開発中のものです。 [2025/08/01(金) 11:05:55.88 ID:lJKT82pJ.net]
EA Battlefield 6 - Battlefield Portal で提供される
ユーザーレベルエディタに Godot Engine が使用される模様
EA や DICE Frostbite エンジンがどの程度 Godot Engine に関与するのかは不明

759 名前:名前は開発中のものです。 mailto:sage [2025/08/01(金) 12:20:22.92 ID:fXkym6nE.net]
ああこれGODOT大勝利すぎるよな
こんな大手が勝手に利用実績作ってくれるんだから

ユーザー作成コンテンツ用のツールとしてのポテンシャルは他のエンジンよりも高いのかもしれないな、主にライセンスのおかげだと思うけど

760 名前:名前は開発中のものです。 [2025/08/05(火) 05:48:14.68 ID:vWykVdg0.net]
gemini cliって何に使える?

761 名前:名前は開発中のものです。 mailto:sage [2025/08/05(火) 19:19:30.34 ID:gM/N/ahx.net]
それこそ gemini さんご本人に聞いてみたらいい案件
煽りとかでなくわりとマジレスで

762 名前:名前は開発中のものです。 [2025/08/05(火) 21:34:35.64 ID:u4t7x4Kh.net]
godot製のゲーム見るとパッとしないな
3Dに関してもちょっとしたものでもUnrealの方がリッチに見える

763 名前:名前は開発中のものです。 mailto:sage [2025/08/05(火) 22:02:20.32 ID:EERayGCm.net]
まあAAA級の3DやりたいならUnrealだと思うけど
ワイはローポリだからGodotで十分

764 名前:名前は開発中のものです。 [2025/08/07(木) 11:31:23.67 ID:0nWRJ2Xs.net]
自分のゲームとの付き合い方が、スキマ時間の暇つぶしだからなぁ
ミニゲーム作りだよね

765 名前:名前は開発中のものです。 mailto:sage [2025/08/07(木) 15:52:53.47 ID:xUGa67EJ.net]
Unrealで簡単に綺麗な3Dが作れるからそうするだけであって
作るゲームとしてはミニゲームだな

766 名前:名前は開発中のものです。 [2025/08/09(土) 11:14:01.02 ID:4RwU/Lbg.net]
自分が楽しみたいから作りたい



767 名前:名前は開発中のものです。 [2025/08/09(土) 11:48:00.31 ID:4RwU/Lbg.net]
アイディアって、発想の時点でガチガチに計画練ってみる?
取り掛からないと駄目な部分は見えてこないかな?

これ最高やん→作り始める→あれ、このゲームシステム整合性取れないな→挫折
何とか形にするのってむずいよね

768 名前:名前は開発中のものです。 mailto:sage [2025/08/09(土) 13:47:17.98 ID:apBax/Mj.net]
基礎が(できて)ない人の典型的な症状ですね、基礎から学んでください
自分を見ればわかると思いますが、ゼロに何を足しても掛けてもゼロです、永遠に

769 名前:名前は開発中のものです。 mailto:sage [2025/08/09(土) 13:54:42.79 ID:Vj+QsGrf.net]
ゼロに足したら何か変化があるじゃろっていうツッコミ待ち

770 名前:名前は開発中のものです。 [2025/08/09(土) 14:07:15.70 ID:XFNG7x17.net]
ゼロに足し算すれば変化が起こることを知らない時点で算数の基礎が出来てないのだ

771 名前:名前は開発中のものです。 mailto:sage [2025/08/09(土) 14:56:31.83 ID:SHBIrPbt.net]
加算なら「なぜ誰でも出来る事が世界でたった1人だけ出来ないのか」説明が付かない
0*n(乗算)だよなあ

772 名前:名前は開発中のものです。 [2025/08/09(土) 17:54:13.25 ID:BCyByyxf.net]
とにかく試作品の段階でも公開して、フィードバック貰いながら完成させた方が良いかもね

完成しない原因は期限も決まってないし、ガントチャートとか作ってタスクの総数も見積もってないからでしょう

小規模でも完成させて、後から自分が注力したいところを作り込んで行けば良いんじゃないのかな
よく分かんないけど

773 名前:名前は開発中のものです。 [2025/08/09(土) 20:20:36.62 ID:4RwU/Lbg.net]
いうて完璧にゲームシステムをイメージ出来てるもんなの?

774 名前:名前は開発中のものです。 [2025/08/09(土) 22:07:32.11 ID:tyEFv4Yu.net]
テスト用ピログラムを組むんじゃ~

775 名前:名前は開発中のものです。 [2025/08/10(日) 07:40:27.65 ID:QzlW7CNX.net]
>>769
>>763の「実装してみてアイデアとシステムの整合性が取れてなかった」については
PoCの段階で実現不可能と判明しただけでは?
挫折とは異なり製品開発のごく一般的なプロセスだと思う
ITの分野でもPoCで実現可能と判断されるのは3〜4割程度らしい

776 名前:名前は開発中のものです。 [2025/08/10(日) 10:31:41.78 ID:Om3DkguD.net]
せやね
テスト感覚でじゃんじゃん作って、その100のうち1つでも当たればいいって感じでやればいいんだけどね
失敗続きだから失敗しない計画というのを建てようとしてるんだが、そんなものはないんだよな
ブラッシュアップ指定っくもんだし



777 名前:名前は開発中のものです。 [2025/08/10(日) 12:09:38.26 ID:QzlW7CNX.net]
実験は実験だから上手くいっても行かなくてもそれ自体に価値があると思う
実装する中で再利用可能なパーツを作っておいて、いかに実験の期間を短くするかが重要なのかもね

778 名前:名前は開発中のものです。 [2025/08/10(日) 12:54:25.04 ID:Om3DkguD.net]
うん テストを増やす

779 名前:名前は開発中のものです。 mailto:sage [2025/08/10(日) 18:42:28.04 ID:OvLQ8W5U.net]
学力テストも問題を見てココは授業に出た、ココは教科書に書いてあった、ココは書いてないけど
テストに出るぞと言われたと設問に対して答えを覚えてる状態でないと殆ど答えを書けない
それと一緒で過去に習ったチュートリアル、ブログ、数式が、プログラムを考えた時に
記憶と紐付けされ引き出せないと車輪の再発明をする事になる
そういう状態が起きないなら、脳の中期・長期記憶がパーになってる

780 名前:名前は開発中のものです。 mailto:sage [2025/08/10(日) 19:05:18.47 ID:bcR0zlWI.net]
>>775
学力テストにしろプログラミングにしろ、
解の導き方は知ってても、答えそのものをを覚えてることってあんまりないんじゃねーかな
覚えても意味ないし

781 名前:名前は開発中のものです。 mailto:sage [2025/08/10(日) 20:10:43.08 ID:OvLQ8W5U.net]
>>776
答えが書けるのは式を覚えてるからで、記憶を使って覚えた事をツールの様に転換しているから
ハサミやナイフのように使える
そもそも完全にトッカカリになる記憶がない物は人はイメージする事はおろか作る事すら出来ない

782 名前:名前は開発中のものです。 mailto:sage [2025/08/10(日) 21:23:22.70 ID:bcR0zlWI.net]
>>777
式すら覚えてないよ
式の導出方法の考え方を理解してるだけ

783 名前:名前は開発中のものです。 [2025/08/10(日) 21:29:32.99 ID:CqwsPPLE.net]
スターデューバレーは5年、アンダーテールは2年半、ヴァンサバでさえ1年間開発に費やしている
しかもこれらのゲームの開発者は仕事してなくて一日中打ち込んでこの期間
それでもここの皆んなはゲーム開発を続けるのかい?

784 名前:名前は開発中のものです。 mailto:sage [2025/08/10(日) 21:41:26.76 ID:OvLQ8W5U.net]
ジジババだと1+1を考えてる間に何と何を足すのかすら覚えてないから永久に足し算が出来ない
痴呆症は数分前の事すら覚えてない
毎日同じ事をずっと聞いてたのが痴呆症だったとしても不思議だとは思わない

785 名前:名前は開発中のものです。 mailto:sage [2025/08/10(日) 23:05:33.57 ID:2TY9GzGW.net]
何億年追いかけても達成できない夢なんていくらでもあるのに
五年で達成できる夢なら追う価値は十分にあるよなぁ
オレはそういう考え方をするタイプ

786 名前:名前は開発中のものです。 mailto:sage [2025/08/11(月) 00:04:13.68 ID:jlHor8xa.net]
人に迷惑掛けないなら合法なら何してもいい
ただ自分が嫌な事やりたくない事から逃げる為に
他人を利用してるだけなのは解せん



787 名前:名前は開発中のものです。 mailto:sage [2025/08/11(月) 06:03:45.23 ID:INdy+2hj.net]
ワナビは精神疾患の安定剤代わりに質問して答えて貰ってうれションしてるだけだからな

788 名前:名前は開発中のものです。 [2025/08/11(月) 14:43:59.60 ID:b35RjK+p.net]
ここでお前らが質問をしてのんびり回答を待ってる間に俺は一本仕上げたよ
ゲームの完成度はとても低いが日々やってることがいつか結実すると信じてるからひたすら作ってはリリースしていくつもり

789 名前:名前は開発中のものです。 [2025/08/12(火) 09:47:49.44 ID:veliXmTO.net]
グリグリさん?

790 名前:名前は開発中のものです。 mailto:sage [2025/08/12(火) 11:40:21.32 ID:D8aEnD5Q.net]
続けることこそ才能、これぞ真理よ

791 名前:名前は開発中のものです。 [2025/08/12(火) 13:39:47.57 ID:veliXmTO.net]
ゲーム作り復帰したけど、わくわくするねやっぱり
完成させるぞ

chatgptで作れるいうけど、他人の書いたコードとかワケワカランなるな

792 名前:名前は開発中のものです。 mailto:sage [2025/08/12(火) 13:56:25.22 ID:wbfGEfjA.net]
ちゃんとした雛形のコアスクリプトがあるなら理解しようとするけど
自分以外の奴のコードなんか余程じゃないと理解しようとする気になれんわそんなもん
昔それやるハメになって胃がやられるかと思ったわ

793 名前:名前は開発中のものです。 [2025/08/12(火) 19:29:14.19 ID:dzjkpfKW.net]
ChatGPTにソースコード生成してもらうなら処理も説明してくれるだろ
ネットで拾ったプロジェクトでさえzipで投げて丸ごと解析すらしてくれる

794 名前:名前は開発中のものです。 [2025/08/13(水) 07:37:43.99 ID:o1mYTevh.net]
まあ頑張ろうか
>>788
自分である程度進めてからアドバイスもらわんと わけわからんよな

795 名前:名前は開発中のものです。 [2025/08/13(水) 12:07:29.01 ID:o1mYTevh.net]
頭固すぎてプログラミング辛い
やわやわしたい

796 名前:名前は開発中のものです。 [2025/08/13(水) 14:37:02.30 ID:o1mYTevh.net]
センスがないのがきちーな



797 名前:名前は開発中のものです。 [2025/08/14(木) 13:10:48.37 ID:Nb2iwLU4.net]
衝突相手のオブジェクトがどれか調べる方法ってある?
名前で判定してるんだけど名前って変更することあるし、底に依存する設計って良くないのかなとか
衝突相手の名前がenemyだったら、if area.name = "enemy":処理
みたいな感じにしてる

798 名前:名前は開発中のものです。 mailto:sage [2025/08/14(木) 14:34:30.06 ID:p2Gn9odV.net]
適切に管理してる限りは名前でも問題ないのでは?
instance IDで判定すれば名前が重複した場合の様な誤判定はなくせる
enemyに属する種別として判定したいのであればEnemyクラスにして型で判定する
またはグループで管理する

799 名前:名前は開発中のものです。 [2025/08/14(木) 15:24:38.14 ID:EPDo1MlI.net]
ダメだ。5chはソース貼るとNGワードに引っ掛かるんだな
クラス名での判定処理が手軽なんじゃない?
class_nameの形で宣言するやつ

5chはソース貼れないからDiscordで聞いた方がいいと思う

800 名前:名前は開発中のものです。 [2025/08/14(木) 16:37:05.46 ID:Nb2iwLU4.net]
ありがとう
名前でやってみるわ
別の変更することはそうそうないんだが、スクリプトでクラス名設定して、そちらを使ったほうがまあ後々便利そうではある
ただ、使いもしないものを考えても無駄だしな

801 名前:名前は開発中のものです。 mailto:sage [2025/08/14(木) 16:58:20.13 ID:p2Gn9odV.net]
単純に1対1の接触判定なら名前で十分なんだけど
複数の敵だとか弾だとか種別で振り分ける要件があるなら型で判定するのが楽
その後の種別毎の処理もクラスに持たせれば尚捗る

後から名前判定を型判定に切り替えようと思った場合でも必要な修正量は少ないと思うので
そういう方法があると知ってるだけでも十分よ

802 名前:名前は開発中のものです。 [2025/08/16(土) 10:01:50.25 ID:yNHWyeJg.net]
tonkusu

803 名前:名前は開発中のものです。 [2025/08/16(土) 10:09:34.14 ID:yNHWyeJg.net]
もう何年も全く上達しとらん

804 名前:名前は開発中のものです。 mailto:sage [2025/08/16(土) 22:40:24.94 ID:grW1btj7.net]
しゃっ、なぜか突然やる気出てきた! 一本なんか作ろっと

805 名前:名前は開発中のものです。 [2025/08/17(日) 00:26:07.73 ID:R99XdFlR.net]
プラットフォーマー?シューティング?
いずれにせよゲーム作るのは大変

806 名前:名前は開発中のものです。 [2025/08/17(日) 06:08:18.66 ID:ZbAJcgXG.net]
aiでインディーゲー制作終わる?



807 名前:名前は開発中のものです。 mailto:sage [2025/08/17(日) 06:48:30.88 ID:ZmztiPxu.net]
終わってるのはお前の頭だ

808 名前:名前は開発中のものです。 [2025/08/17(日) 07:00:20.34 ID:ZbAJcgXG.net]
はい

809 名前:名前は開発中のものです。 mailto:sage [2025/08/17(日) 09:26:56.65 ID:OtXByaPB.net]
はいじゃないが

810 名前:名前は開発中のものです。 mailto:sage [2025/08/17(日) 15:05:41.75 ID:9AmcoDI2.net]
受験で言ったら10数年浪人してるのと同じなのに未だに諦めないのは意味不
このままだと10年後も収入ゼロ行進が続くんじゃないの?

811 名前:名前は開発中のものです。 [2025/08/19(火) 09:10:38.40 ID:3t3CLEnJ.net]
プログラミング苦手なんだが1日1時間からやりゃいいかな?

812 名前:名前は開発中のものです。 mailto:sage [2025/08/19(火) 10:35:35.56 ID:JdP3e7K/.net]
数学の勉強から

813 名前:名前は開発中のものです。 mailto:sage [2025/08/19(火) 11:31:29.44 ID:GZsC++n5.net]
落ちこぼれの学年最下位は1日何時間勉強したら偏差値50の平均的な大学に受かると思う?

814 名前:名前は開発中のものです。 [2025/08/19(火) 13:36:31.30 ID:uLkJ1eHB.net]
下準備とか要らんから作りたいものがあるならさっさと作りなさい

815 名前:名前は開発中のものです。 [2025/08/19(火) 18:25:53.26 ID:jJatJopQ.net]
作りたいものがあるならBrackeysのチュートリアル動画で今日明日中にGDScriptは終えるべき
作りたいものがないなら何もしなくていい

基本を終えたらChatGPTに「これがやりたい」と伝えればソースコードくれる
ソースコードの意味がわからなかったら説明して貰えばいい
それでもわからなかったらもっと簡単な実装に変えてくれと言えばいい

816 名前:名前は開発中のものです。 [2025/08/20(水) 06:35:13.54 ID:sxbQP0Ah.net]
connectのcallableってチョウ噛み砕くとつまりなに?



817 名前:名前は開発中のものです。 mailto:sage [2025/08/20(水) 06:38:33.56 ID:w6+HP3Ao.net]
シグナル発呼時に呼ばれる関数名

818 名前:名前は開発中のものです。 mailto:sage [2025/08/20(水) 06:44:18.64 ID:w6+HP3Ao.net]
あ?connect張った側だと着呼か
まあCallableクラスは関数を表す

819 名前:名前は開発中のものです。 [2025/08/20(水) 10:41:04.62 ID:sxbQP0Ah.net]
ありがとう
思い出してきた

ってかノードのプロパティにアクセスしてから、カンス名だけ指定したほうがシンプルかなぁ
collableの使い所が分からん

820 名前:名前は開発中のものです。 mailto:sage [2025/08/20(水) 11:26:23.53 ID:w6+HP3Ao.net]
自分は1ファイルで見通せる方が好きなのでコードで接続してるが
通常はノードで設定した方が設定状況を纏めて見れるし
エディタに接続アイコンが表示されるのでシンプルかつ見やすいと思う

主にシグナル接続をコードで書くのは自前でシグナルを定義した場合になると思うが
これもグローバルクラスにすれば標準クラスと同様にノードで設定できる様になる

connect以外でのCallableの使い所はラムダ関数を使う場合や関数内関数での使用になるかな

821 名前:名前は開発中のものです。 [2025/08/20(水) 11:26:50.72 ID:8BIAqddk.net]
# connect() の Callable とは?

Godot 4.x から connect() の仕様が変わり、シグナル接続時に Callable クラスを使うようになりました。

記述例(4.x):
button.connect("pressed", Callable(self, "_on_button_pressed"))

Callable は「あるオブジェクトの特定のメソッドを呼び出すための参照」を表すクラスです。
記述例のように connect() によるシグナル接続時に Calalble コンストラクタの第一引数に実行したいメソッドを持つオブジェクト、第二引数に実行したいメソッドを記述します。
これらの引数はそれぞれ第一引数はオブジェクト参照、第二引数はそのオブジェクトが持つメソッド名(文字列)となります。

Godot 4.x では以下のような 3.x の (target, method_name) 形式は廃止され、第2引数に Callable を渡すことが必須になりました。

記述例(3.x) ※4.x 非対応:
button.connect("pressed", self, "_on_button_pressed")

また上記の記述例(4.x)は以下のショートハンドでも記述可能です。

記述例( 4.x ショートハンドver.)
button.pressed.connect(self._on_button_pressed)

これは内部的に Callable(self, "_on_button_pressed") を生成します。
Godot 公式もこの「Signal プロパティ経由」の記述方法を推奨しており、
シンプルかつ Callable を意識せずに利用できるため、実務でもこちらを使うのが一般的です。

822 名前:名前は開発中のものです。 [2025/08/20(水) 11:28:56.28 ID:8BIAqddk.net]
# なぜ Callable を経由するのか?

簡潔にまとめると、以下のメリットがあります。

1. 安全性(未定義メソッドを is_valid() で事前検出可能)
2. IDE 補完・リファクタリング対応(文字列指定ではできなかった恩恵)
3. 統一性(シグナル以外でも「関数参照」として利用可能)
4. 柔軟性(ラムダでシンプルに書ける)
5. 将来性(Godot 4.x 以降の標準記法)

823 名前:名前は開発中のものです。 [2025/08/21(木) 07:12:58.02 ID:/HImpd/9.net]
tonkusu

824 名前:名前は開発中のものです。 [2025/08/21(木) 10:04:41.30 ID:/HImpd/9.net]
プログラミングっていきなり答え見たほうがいいのか?

825 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 10:26:48.86 ID:OYDY07jx.net]
見ないで答えるにはそれを知っていなければならないから最初は必ず見る
クイズだとしても知識を持っていなければ答えられない
パズルだとしてもルールを知らなければ考えられない

プログラムとはコンピュータとの対話言語を使った会話
言葉を覚えると言う意味では他言語とセオリーは変わらない
曖昧さが少ない分覚えやすいまである

826 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 12:09:28.51 ID:Ajf2SJxV.net]
最後はアルゴリズムだからなぁ



827 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 12:24:29.89 ID:OYDY07jx.net]
ゲームにおけるデータ処理なら必要なアルゴリズムは辞典読めば事足りると思う
ゲームに必要な物ならある程度はエンジンが機能を提供してくれる
他がやってない独創的な処理を実装したいなら頭悩ますしかないね

828 名前:名前は開発中のものです。 [2025/08/21(木) 13:27:58.90 ID:zThVp00O.net]
実装したい機能について考え方さえわからない場合も多い
Godotではないが答えを見なければ今でも簡単な当たり判定すら実装できていなかっただろうと思う

829 名前:名前は開発中のものです。 [2025/08/21(木) 14:05:07.38 ID:/HImpd/9.net]
キャラクターをスイッチしたいのだけども
アクティブキャラだけ操作権があって、別キャラと衝突したらそっちに操作権が移る

シグナルはキャラA,B共にarea2dを使っていてあらかじめ有効化している
シグナルのオンオフをいちいち切り替えるのは面倒そうなんで

a,b両方から衝突のシグナルが飛んでくるんで、フィルタリングしたい
フィルタリングの条件分岐に必要な要素って何があるかな?

現在操作キャラ(a)からのシグナルを無視して、それ以外(b)からのシグナルが来たら、bに切り替えるって流れかな
オンオフで対応したほうがシンプルでいいかな




こういう論理的思考が壊滅的に出来ないみたい
練習方法ない?

830 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 14:59:17.38 ID:OYDY07jx.net]
自分が理解できない物を論理的に考えるのは無理なのでまず自分が理解できる所まで単純化する
コンピュータを指示通りに動く人として捉える
相手に自分の考えを伝えるには相手が理解できる言葉を使う
相手がどこまで理解できているかを想像する

>>325の例題を要約すると以下の感じであってるかな?
「アクティブ時にのみ操作可能なキャタクターが複数存在する」
「操作キャラクターが操作可能キャラクターに衝突すると操作権が衝突した相手に移る」
相手が理解しやすい単純な説明を心がける
まず概要を伝えて会話する為の基礎を築く
シグナルとかArea2Dだとか複雑な話題はなくて良い
相手と共通認識ができたらより複雑な話題へ移る

こんな感じで物事を単純化してそこから徐々に複雑化していく
練習方法としては相手が知らない事を説明する事、仕様書を書いて読んで貰う事かな?
場を作るのが難しいけどディスカッションを多数こなすのが良いのではないかな

831 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 15:00:29.64 ID:OYDY07jx.net]
>>325でなくて>>825だったわ

832 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 15:57:31.56 ID:OYDY07jx.net]
必要なのかどうか判らんが>>825の制御方法を回答するなら以下かな
操作可能キャラクターに現在操作権があるかどうかを判定するアクティブフラグを持たせる
操作はフラグが有効な場合にのみ処理する
衝突シグナルの発呼はフラグが有効な場合にのみ処理する
衝突シグナル発呼後にフラグを無効にする
衝突シグナル着呼時にフラグを有効にする

833 名前:名前は開発中のものです。 [2025/08/21(木) 17:37:16.04 ID:zThVp00O.net]
isTouchActiveみたいなbool値でシグナルの受信を管理する必要があるのかと思ったらこれでもいけるらしい
ChatGPTにリファクタリングして貰ったらソースがかなり短くなった

ttps://pastebin.com/YyjtJXCC

ソース冒頭のGameManagerはシングルトンとしてAutoLoadに設定、プロパティはactive_charのみ
このactive_charはゲーム内でアクティブなキャラを一意にする意図

プレイヤーノード構成
CharacterBody2D
├Area2D
│ └CollisionShape2D
└Sprite2D

834 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 18:26:36.99 ID:OYDY07jx.net]
ゲームマネージャがアクティブなキャラクターを保持する方式だね
その方が今誰がアクティブなのかが即判るので良いかもね

一つ気になる点としてはAの処理とBの処理の処理順でAが先に処理される場合
キャラクターAがBに衝突した際にアクティブキャラクターをBに更新してしまうと
その後のB側の衝突処理でBは自分がアクティブキャラクターと認識してAに更新してしまうのではと思う
さてどうかな?

仕様を誰でも判りやすい言語化するのはAIとの対話にも役立つと思うよ

835 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 18:35:03.35 ID:OYDY07jx.net]
ちょっと訂正、後から文章足したからキャラクターAの登場がずれた

キャラクターAとBが存在する時にAとBの処理順がAが先に処理される場合
AがBに衝突した際にアクティブキャラクターをBに更新してしまうと
その後のB側の衝突処理でBは自分がアクティブキャラクターと認識してAに更新してしまうのではと思う

836 名前:名前は開発中のものです。 [2025/08/21(木) 19:10:14.51 ID:zThVp00O.net]
おっしゃる通りキャラAからキャラBにタッチした時にB側の_on_area_enteredが実行されて再度キャラAに操作権が渡る可能性があるため(物理サーバーがシグナルを発火させる順番に依存するため100%ではない)
「アクティブ側だけが切替処理を実行」「同じ物理フレームでの多重切替を禁止」の処理を盛り込む必要ありです

流石です



837 名前:名前は開発中のものです。 mailto:sage [2025/08/21(木) 19:31:45.99 ID:OYDY07jx.net]
AIが使えるとかなり捗るね

自分の上げた>>828方式だと発呼するのが一人だけなのが保証されているので複数による切り替えは発生しない
>>829方式の場合はもうひと工夫が必要

これもやり方は色々あるけど一つ方法を挙げておくと
即時にアクティブキャラクターを更新するのが問題の発生原因なので更新処理を遅延させる
call_deferredを使用すると現フレームと次フレームの間に処理が行われるのでこれを利用する

より具体的にはアクティブキャラクター更新処理を関数化してcall_deferredで呼ぶ
自分で使うならこう書くんだけど行儀が良くないコードなので実用するなら適宜直してね

(func():gm.active_char = other_char).call_deferred()

838 名前:名前は開発中のものです。 [2025/08/22(金) 12:59:11.02 ID:5H9qw/cT.net]
ありがとう
じっくり読んで作るナリよ

やっぱりアクティブキャラだけシグナルを発する方式が安全なんすかね?

839 名前:名前は開発中のものです。 mailto:sage [2025/08/22(金) 13:20:20.86 ID:hykeI/+Z.net]
今回上がった>>828,829どちらでも多重切り替えの対策をしていれば安全性は変わらない
作る人が作りやすい間違えにくい方式を選べば良い
現在のアクティブキャラを頻繁に知る必要があるなら>>829の方が良いと思う
>>828の場合は対象キャラクターの全件走査が必要になる
>>828のメリットはゲームマネージャ不要なので携わるクラスやファイルが少なくなる事かな
全件走査の件はグローバルクラス化して静的変数を持たせればゲームマネージャを用意せずとも同じ結果を得られる
やり方は色々存在する

尚現処理では2体以上のキャラクターと同時に衝突した場合の切り替え対象が不定となるので
優先順位が必要な場合は何らかの追加処理が必要

840 名前:名前は開発中のものです。 [2025/08/22(金) 19:05:13.94 ID:5H9qw/cT.net]
ありがとう
勉強がてら、フィルタリングでやってみるか

841 名前:名前は開発中のものです。 [2025/08/25(月) 19:24:52.64 ID:pgacrMvG.net]
パッパとRPG造りたいナリ

842 名前:名前は開発中のものです。 mailto:sage [2025/08/26(火) 07:36:55.38 ID:jvaDPhtX.net]
そういうあなたにぴったりなゲームエンジンがカドカワさんからでてますよ・・・

843 名前:名前は開発中のものです。 [2025/08/26(火) 09:16:02.52 ID:QxOlVIen.net]
あーいうの余計むずく感じるんで無理

844 名前:名前は開発中のものです。 mailto:sage [2025/08/26(火) 13:49:17.12 ID:WJT07pkb.net]
じゃあ、おまえは何もできません、おまえ自身が無理だからです
出直してきてください
はい、次のワナビどうぞ

845 名前:生出白液 [2025/08/29(金) 00:02:13.70 ID:511euTV9.net]
extends CharacterBody2D
var gravity = 980
var jump_velocity = -600
var p = 2 # ジャンプ回数
@onready var sprite = get_node("rotation_fish") # 子ノード(回転魚など)
func _physics_process(delta):
velocity.y += gravity * delta
if is_on_floor():
p = 2
if Input.is_action_just_pressed("jump") and p > 0:
velocity.y = jump_velocity
p -= 1
if sprite:
sprite.call("receive_message", p) # 回転に通知
move_and_slide()
if is_on_wall():
get_parent().result = 1
get_parent()._result()
queue_free()
このコードに物体のy座標が800を超えたら
get_parent().result = 1  get_parent()._result()  queue_free()
と同じような実行をするコードを追加で作ってもらいたいです。親ノードは下のようです
extends Node2D
var result = 0 # 状態管理用
func _ready():
$Label.visible = false # 最初は非表示
func _result():
if result == 1:
$Label.text = "finish"
$Label.visible = true
else:
$Label.visible = false

846 名前:名前は開発中のものです。 mailto:sage [2025/08/29(金) 01:40:24.24 ID:VmXngAYr.net]
>>840
お前Unity質問スレでもその先生ごっこやってたことあるだろ
滑ってんだよそのノリ
いちいちワナビ追っかけていって絡むのやめろ



847 名前:名前は開発中のものです。 mailto:sage [2025/08/29(金) 01:51:57.67 ID:NTpF3sfj.net]
「子が移動後に壁にぶつかったら親に通知して消滅するコードに
子のy座標が800を超えたら1行目と同様の処理を追加したい」

"壁に接触している"事を判定しているのはif is_on_wall():の部分なのでここを変更する
"壁に接触している"または"y座標が800を超えている"とする
if is_on_wall() or position.y > 800.0:

こんなん?

848 名前:生出白液 [2025/08/29(金) 21:55:18.53 ID:511euTV9.net]
そのコードを加えてみましたが、Invalid assignment of property or key 'result' with value of type 'int' on a base object of type 'Window'.というエラーが出ました。このエラーの意味が全く分かりません教えてもらいたいです

849 名前:名前は開発中のものです。 mailto:sage [2025/08/29(金) 22:12:20.66 ID:US91n0Bz.net]
煽りとか抜きにチャットAIに投げたほうが早いぞ

850 名前:名前は開発中のものです。 mailto:sage [2025/08/29(金) 22:48:50.42 ID:Zy5HkM5N.net]
>>844
そのエラーはresultプロパティにアクセスしようとしたがプロパティが存在しないから発生している
>>843の修正を元には発生しない

想像に想像を重ねるとエラー文に出てくる"Window"はエラーを出したノードの親ノードを指している
if _on_wall():の次行のget_parent().result = 1が既出エラーを発生させる可能性がある
親ノードにぶら下がる子ノードだったならこのエラーにはならず親ノードの場合に発生する

修正以前にコードの親関係が正しくなくコードが機能する状態でないと思われる
修正前コードを動かすには孫ノードとコードが不足しているのでそれらの追加が必要

ノード構成は以下となるはず
Node2D (親コードextends Node2D配下のアタッチ先)
+CharacterBody2D (子コードextends CharacterBody2D配下のアタッチ先)
++CollisionShape2D
++Sprite2D (孫コードのアタッチ先※提示されていない)

自分もAIに聞いた方が応答速度が早くて良いと思うよ

851 名前:名前は開発中のものです。 mailto:sage [2025/08/29(金) 23:01:21.73 ID:Zy5HkM5N.net]
想定が足りていなかった
CharacterBody2Dノードをブランチしてシーンとした場合に
修正後コードでこのシーンを「現在のシーンを実行」で動かすと>>844のエラーが発生する
本来親ノードがなければ動かないシーンをカレントシーンで動かした事が原因
正しく親ノードの配下としてCharacterBody2Dを配置する事

852 名前:生出白液 [2025/09/02(火) 22:58:19.74 ID:E0WT+1Oc.net]
ColorRect(ルート)
└── Node2D(result 変数あり)
├── Label
└── Player(CharacterBody2D)ここにエラーが出たコードが書かれている
result変数が書いてあるNode2Dを親、Labelノードが子のコードのシーンがあって、それを親にし、Playerシーンを子にした状態で同じようなエラーが発生した。
Chatgptに詳しく聞いてみたが解決しなかった。ここでPlayerノードにfunc _ready():
print("自分:", self)
print("親:", get_parent())
print("親の親:", get_parent().get_parent())
を書いて実行すると
自分:fish:<CharacterBody2D#29007807814>
親:root:<Window#28470936891>
親の親:<Object#null>
自分:fish:<CharacterBody2D#31323063660>
親:result:<Node2D#31272731991>
親の親:ColorRect:<ColorRect#31239177554>
と出た。2回実行されてそれぞれ違う結果になった理由が分からなかった。シンプルにChatgptの使い方が悪いかもしれないけどあまり使えなかったです

853 名前:名前は開発中のものです。 mailto:sage [2025/09/02(火) 23:33:43.35 ID:HYRahreF.net]
>>848
get_parent()とは一つ上のノードを取得する関数なので
図のPlayerでget_parent()を実行したならば結果はColorRectになる
なのでColorRectの子としてPlayerを配置するならがresult変数はColorRectが持っていなければエラーとなる

一回の実行で同じ_redayが二回呼ばれる事は考えにくい
print関数で表示した結果の後ろの数字はノードの固有番号なので違っているならばそれぞれのノードが存在している事になる
ツリー上にCharacterBody2Dが2つ存在していてそれぞれが同じコードが割り当てられていると推測する
この場合、図示されているCharacterBody2DではないCharacterBody2DはNode2Dの配下のはず
ルート直下のCharacterBody2Dを削除すればresultにアクセスできないエラーはなくなる

854 名前:名前は開発中のものです。 mailto:sage [2025/09/02(火) 23:45:42.11 ID:HYRahreF.net]
>>848
>シンプルにChatgptの使い方が悪いかもしれないけどあまり使えなかったです
判らない事は幾ら考えても判らないので聞いてくれて構わないが
残念ながらこういう場では解答が貰える保証がない
なので独学で学習しているならAIの利用方法を習得するのが望ましい

もちろんAIが確実に正答を返してくれる訳ではないので判らなかったら質問を投げてくれてOK
しかし返ってくるかどうかいつ返ってくるかも判らない返答を待つのは効率が悪い
自分は使ってないので判らないが廃墟に近いここよりDiscordの方が活気があったりしないだろうか?

855 名前:名前は開発中のものです。 mailto:sage [2025/09/02(火) 23:49:54.24 ID:HYRahreF.net]
後は英語力必要になるけどredditあたりか
どこでも同じだけどコミュニティのルールに沿った質問が出来ないと相手にされなくなるから
質問する際にはルールを覚える必要はあるね

856 名前:名前は開発中のものです。 mailto:sage [2025/09/03(水) 00:01:51.40 ID:jiI02xbM.net]
>>848
少し間違っていた
自分:fish:<CharacterBody2D#29007807814>
親:root:<Window#28470936891>
親の親:<Object#null>
自分:fish:<CharacterBody2D#31323063660>
親:result:<Node2D#31272731991>
親の親:ColorRect:<ColorRect#31239177554>

このパターンだとColorRectの下にコードを持ったCharacterBody2Dは居ない
rootの下に配置されているのでこのツリーには存在していない
グローバルにCharacterBody2Dのコードを登録してはいまいか?



857 名前:名前は開発中のものです。 mailto:sage [2025/09/03(水) 11:39:46.16 ID:2H/FhQha.net]
こういうやり取りのいいところは
ChatBOT使ったところでそいつができないことができるようになるわけじゃない、と確認できることだよな
こりゃあ、何年かかっても何もできないわけだわ

858 名前:名前は開発中のものです。 mailto:sage [2025/09/03(水) 12:00:54.40 ID:jiI02xbM.net]
掲示板でもAIでも答えられる答えしか返らないので欲しい解答が得られる質問の仕方が判らないと先に進まないね
最初に提示されたコードでほぼ合っているので後少しの気付きを得られれば次に進めると思うんだな
コードレビューして基本的な考え方を学べると良いのだけれどそういう場を得られない人は大変よね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<236KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef