【軽量】godot engine【無料】 part4 (918レス)
1-

814: 08/20(水)06:44 ID:w6+HP3Ao(2/3) AAS
あ?connect張った側だと着呼か
まあCallableクラスは関数を表す
815: 08/20(水)10:41 ID:sxbQP0Ah(2/2) AAS
ありがとう
思い出してきた

ってかノードのプロパティにアクセスしてから、カンス名だけ指定したほうがシンプルかなぁ
collableの使い所が分からん
816: 08/20(水)11:26 ID:w6+HP3Ao(3/3) AAS
自分は1ファイルで見通せる方が好きなのでコードで接続してるが
通常はノードで設定した方が設定状況を纏めて見れるし
エディタに接続アイコンが表示されるのでシンプルかつ見やすいと思う

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

connect以外でのCallableの使い所はラムダ関数を使う場合や関数内関数での使用になるかな
817: 08/20(水)11:26 ID:8BIAqddk(1/2) AAS
# connect() の Callable とは?

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

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

Callable は「あるオブジェクトの特定のメソッドを呼び出すための参照」を表すクラスです。
記述例のように connect() によるシグナル接続時に Calalble コンストラクタの第一引数に実行したいメソッドを持つオブジェクト、第二引数に実行したいメソッドを記述します。
これらの引数はそれぞれ第一引数はオブジェクト参照、第二引数はそのオブジェクトが持つメソッド名(文字列)となります。
省9
818: 08/20(水)11:28 ID:8BIAqddk(2/2) AAS
# なぜ Callable を経由するのか?

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

1. 安全性(未定義メソッドを is_valid() で事前検出可能)
2. IDE 補完・リファクタリング対応(文字列指定ではできなかった恩恵)
3. 統一性(シグナル以外でも「関数参照」として利用可能)
4. 柔軟性(ラムダでシンプルに書ける)
5. 将来性(Godot 4.x 以降の標準記法)
819: 08/21(木)07:12 ID:/HImpd/9(1/3) AAS
tonkusu
820: 08/21(木)10:04 ID:/HImpd/9(2/3) AAS
プログラミングっていきなり答え見たほうがいいのか?
821: 08/21(木)10:26 ID:OYDY07jx(1/8) AAS
見ないで答えるにはそれを知っていなければならないから最初は必ず見る
クイズだとしても知識を持っていなければ答えられない
パズルだとしてもルールを知らなければ考えられない

プログラムとはコンピュータとの対話言語を使った会話
言葉を覚えると言う意味では他言語とセオリーは変わらない
曖昧さが少ない分覚えやすいまである
822: 08/21(木)12:09 ID:Ajf2SJxV(1) AAS
最後はアルゴリズムだからなぁ
823: 08/21(木)12:24 ID:OYDY07jx(2/8) AAS
ゲームにおけるデータ処理なら必要なアルゴリズムは辞典読めば事足りると思う
ゲームに必要な物ならある程度はエンジンが機能を提供してくれる
他がやってない独創的な処理を実装したいなら頭悩ますしかないね
824: 08/21(木)13:27 ID:zThVp00O(1/3) AAS
実装したい機能について考え方さえわからない場合も多い
Godotではないが答えを見なければ今でも簡単な当たり判定すら実装できていなかっただろうと思う
825
(2): 08/21(木)14:05 ID:/HImpd/9(3/3) AAS
キャラクターをスイッチしたいのだけども
アクティブキャラだけ操作権があって、別キャラと衝突したらそっちに操作権が移る

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

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

現在操作キャラ(a)からのシグナルを無視して、それ以外(b)からのシグナルが来たら、bに切り替えるって流れかな
省3
826: 08/21(木)14:59 ID:OYDY07jx(3/8) AAS
自分が理解できない物を論理的に考えるのは無理なのでまず自分が理解できる所まで単純化する
コンピュータを指示通りに動く人として捉える
相手に自分の考えを伝えるには相手が理解できる言葉を使う
相手がどこまで理解できているかを想像する

>>325の例題を要約すると以下の感じであってるかな?
「アクティブ時にのみ操作可能なキャタクターが複数存在する」
「操作キャラクターが操作可能キャラクターに衝突すると操作権が衝突した相手に移る」
省7
827: 08/21(木)15:00 ID:OYDY07jx(4/8) AAS
>>325でなくて>>825だったわ
828
(2): 08/21(木)15:57 ID:OYDY07jx(5/8) AAS
必要なのかどうか判らんが>>825の制御方法を回答するなら以下かな
操作可能キャラクターに現在操作権があるかどうかを判定するアクティブフラグを持たせる
操作はフラグが有効な場合にのみ処理する
衝突シグナルの発呼はフラグが有効な場合にのみ処理する
衝突シグナル発呼後にフラグを無効にする
衝突シグナル着呼時にフラグを有効にする
829
(2): 08/21(木)17:37 ID:zThVp00O(2/3) AAS
AA省
830: 08/21(木)18:26 ID:OYDY07jx(6/8) AAS
ゲームマネージャがアクティブなキャラクターを保持する方式だね
その方が今誰がアクティブなのかが即判るので良いかもね

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

仕様を誰でも判りやすい言語化するのはAIとの対話にも役立つと思うよ
831: 08/21(木)18:35 ID:OYDY07jx(7/8) AAS
ちょっと訂正、後から文章足したからキャラクターAの登場がずれた

キャラクターAとBが存在する時にAとBの処理順がAが先に処理される場合
AがBに衝突した際にアクティブキャラクターをBに更新してしまうと
その後のB側の衝突処理でBは自分がアクティブキャラクターと認識してAに更新してしまうのではと思う
832: 08/21(木)19:10 ID:zThVp00O(3/3) AAS
おっしゃる通りキャラAからキャラBにタッチした時にB側の_on_area_enteredが実行されて再度キャラAに操作権が渡る可能性があるため(物理サーバーがシグナルを発火させる順番に依存するため100%ではない)
「アクティブ側だけが切替処理を実行」「同じ物理フレームでの多重切替を禁止」の処理を盛り込む必要ありです

流石です
833: 08/21(木)19:31 ID:OYDY07jx(8/8) AAS
AIが使えるとかなり捗るね

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

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

より具体的にはアクティブキャラクター更新処理を関数化してcall_deferredで呼ぶ
省2
834: 08/22(金)12:59 ID:5H9qw/cT(1/2) AAS
ありがとう
じっくり読んで作るナリよ

やっぱりアクティブキャラだけシグナルを発する方式が安全なんすかね?
835: 08/22(金)13:20 ID:hykeI/+Z(1) AAS
今回上がった>>828,829どちらでも多重切り替えの対策をしていれば安全性は変わらない
作る人が作りやすい間違えにくい方式を選べば良い
現在のアクティブキャラを頻繁に知る必要があるなら>>829の方が良いと思う
>>828の場合は対象キャラクターの全件走査が必要になる
>>828のメリットはゲームマネージャ不要なので携わるクラスやファイルが少なくなる事かな
全件走査の件はグローバルクラス化して静的変数を持たせればゲームマネージャを用意せずとも同じ結果を得られる
やり方は色々存在する
省2
836: 08/22(金)19:05 ID:5H9qw/cT(2/2) AAS
ありがとう
勉強がてら、フィルタリングでやってみるか
837: 08/25(月)19:24 ID:pgacrMvG(1) AAS
パッパとRPG造りたいナリ
838: 08/26(火)07:36 ID:jvaDPhtX(1) AAS
そういうあなたにぴったりなゲームエンジンがカドカワさんからでてますよ・・・
839: 08/26(火)09:16 ID:QxOlVIen(1) AAS
あーいうの余計むずく感じるんで無理
840
(1): 08/26(火)13:49 ID:WJT07pkb(1) AAS
じゃあ、おまえは何もできません、おまえ自身が無理だからです
出直してきてください
はい、次のワナビどうぞ
841: 生出白液 08/29(金)00:02 ID:511euTV9(1/2) AAS
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
省25
842: 08/29(金)01:40 ID:VmXngAYr(1) AAS
>>840
お前Unity質問スレでもその先生ごっこやってたことあるだろ
滑ってんだよそのノリ
いちいちワナビ追っかけていって絡むのやめろ
843
(1): 08/29(金)01:51 ID:NTpF3sfj(1) AAS
「子が移動後に壁にぶつかったら親に通知して消滅するコードに
子のy座標が800を超えたら1行目と同様の処理を追加したい」

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

こんなん?
844
(2): 生出白液 08/29(金)21:55 ID:511euTV9(2/2) AAS
そのコードを加えてみましたが、Invalid assignment of property or key 'result' with value of type 'int' on a base object of type 'Window'.というエラーが出ました。このエラーの意味が全く分かりません教えてもらいたいです
845: 08/29(金)22:12 ID:US91n0Bz(1) AAS
煽りとか抜きにチャットAIに投げたほうが早いぞ
846: 08/29(金)22:48 ID:Zy5HkM5N(1/2) AAS
>>844
そのエラーはresultプロパティにアクセスしようとしたがプロパティが存在しないから発生している
>>843の修正を元には発生しない

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

修正以前にコードの親関係が正しくなくコードが機能する状態でないと思われる
省7
847: 08/29(金)23:01 ID:Zy5HkM5N(2/2) AAS
想定が足りていなかった
CharacterBody2Dノードをブランチしてシーンとした場合に
修正後コードでこのシーンを「現在のシーンを実行」で動かすと>>844のエラーが発生する
本来親ノードがなければ動かないシーンをカレントシーンで動かした事が原因
正しく親ノードの配下としてCharacterBody2Dを配置する事
848
(3): 生出白液 09/02(火)22:58 ID:E0WT+1Oc(1) AAS
AA省
849: 09/02(火)23:33 ID:HYRahreF(1/3) AAS
>>848
get_parent()とは一つ上のノードを取得する関数なので
図のPlayerでget_parent()を実行したならば結果はColorRectになる
なのでColorRectの子としてPlayerを配置するならがresult変数はColorRectが持っていなければエラーとなる

一回の実行で同じ_redayが二回呼ばれる事は考えにくい
print関数で表示した結果の後ろの数字はノードの固有番号なので違っているならばそれぞれのノードが存在している事になる
ツリー上にCharacterBody2Dが2つ存在していてそれぞれが同じコードが割り当てられていると推測する
省2
850: 09/02(火)23:45 ID:HYRahreF(2/3) AAS
>>848
>シンプルにChatgptの使い方が悪いかもしれないけどあまり使えなかったです
判らない事は幾ら考えても判らないので聞いてくれて構わないが
残念ながらこういう場では解答が貰える保証がない
なので独学で学習しているならAIの利用方法を習得するのが望ましい

もちろんAIが確実に正答を返してくれる訳ではないので判らなかったら質問を投げてくれてOK
しかし返ってくるかどうかいつ返ってくるかも判らない返答を待つのは効率が悪い
省1
851: 09/02(火)23:49 ID:HYRahreF(3/3) AAS
後は英語力必要になるけどredditあたりか
どこでも同じだけどコミュニティのルールに沿った質問が出来ないと相手にされなくなるから
質問する際にはルールを覚える必要はあるね
852
(1): 09/03(水)00:01 ID:jiI02xbM(1/4) AAS
>>848
少し間違っていた
自分:fish:<CharacterBody2D#29007807814>
親:root:<Window#28470936891>
親の親:<Object#null>
自分:fish:<CharacterBody2D#31323063660>
親:result:<Node2D#31272731991>
省4
853: 09/03(水)11:39 ID:2H/FhQha(1/2) AAS
こういうやり取りのいいところは
ChatBOT使ったところでそいつができないことができるようになるわけじゃない、と確認できることだよな
こりゃあ、何年かかっても何もできないわけだわ
854: 09/03(水)12:00 ID:jiI02xbM(2/4) AAS
掲示板でもAIでも答えられる答えしか返らないので欲しい解答が得られる質問の仕方が判らないと先に進まないね
最初に提示されたコードでほぼ合っているので後少しの気付きを得られれば次に進めると思うんだな
コードレビューして基本的な考え方を学べると良いのだけれどそういう場を得られない人は大変よね
855: 09/03(水)12:29 ID:jiI02xbM(3/4) AAS
ノードの構造が変だと指摘されてノードから見える親を調べてる時点で有能に思う
埋め込んだコードが二回実行されるのが変だと気が付くのも有能
一度しか呼ばれない前提のコードが二回呼ばれているならば誰が呼び出しているかを探す事になる

取得した情報で自分自身の親情報が取れているのでどこにコードが存在しているかはおおよそ判る
ここで親がrootと表示されている事で自身が管理しているツリーに無いノードが存在している事が判る

GodotEngineの仕様を知っていればカレントツリーの上にrootがある事も判るのだけれど
初心者向け解説で触れているのは見かけないのでここは躓きポイント
省5
856: 09/03(水)15:01 ID:JAFxBHMC(1) AAS
Discordにでも行けばいいのに、コードすらまともに貼れないここで長々と質問する意味が分からない
857: 09/03(水)15:08 ID:2H/FhQha(2/2) AAS
ぶっちゃけスパムレベルの質問だからね、追い出されたんだろ
こういう掃きだめ掲示板ならではよ
解決しようがしまいが誰も(本人も)困らないし
858
(1): 生出白液 09/03(水)18:05 ID:F2t9mgCh(1) AAS
>>852
エラーの原因はグローバルにCharacterBody2Dのコードを登録していたからでした。教えてくれてありがとうございます。後これからはディスコードで質問していきたいと思います
859: 09/03(水)18:38 ID:jiI02xbM(4/4) AAS
>>858
解決したなら良かった、先は長いから程々で頑張れよ
860
(1): 09/06(土)17:28 ID:jL8JB8c1(1) AAS
Area2Dノードを親にした物体を複製した後queue_free()で消したが衝突判定が残っていた。物体自体は見えないのに衝突判定だけ消えないことが起こるものですか?
861: 09/06(土)20:25 ID:hIKwuN7F(1) AAS
はい、そうです。
862: 09/06(土)21:05 ID:J6IH1IIs(1) AAS
ChatGPTで聞けば答えが出てくるようなレベルのことを人に聞くような人がまともなアプリ開発なんかできるの?
863: 09/06(土)21:34 ID:Cy3rYlNu(1) AAS
>>860
queue_free()はfree()をキューに入れる関数でその時点ではノードは消えていません
864: 09/14(日)16:40 ID:+FNV0YKb(1) AAS
チャットジーピーテーお金払わないと嘘ばかり教えてくるからな
865: 09/14(日)19:13 ID:qOx/PcAM(1) AAS
残念ながらお金を払っても嘘ばかり教えてくるぞ
866: 09/14(日)19:32 ID:XKuRbbQE(1) AAS
よさげなエロサンプル見せてこの続きは有料っつって金はらったら結局サンプルと同じ程度ものしかないみたいな
詐欺商売やないかヽ(`Д´)ノ
867: 09/16(火)06:32 ID:MGrSj3oL(1) AAS
いつのまにかGodot 4.5がリリースされた
contributorが400人を超えて規模が結構大きくなってきた
868: 09/16(火)07:00 ID:hyfiSgwN(1) AAS
変更内容が多くて項目一覧見てるだけで目が回った
869: 09/16(火)13:41 ID:MMr3FO17(1) AAS
LGBTかなんかで炎上したのはなんだったのかってくらい順調だな
870: 09/16(火)14:32 ID:5KPKLwK7(1) AAS
UnityやUEに比べて凄い軽いからなぁ。ログインも無いし。売上報告もいらない。
個人で使うなら最高のエンジンだろうね
871
(1): 09/16(火)15:09 ID:JwJdTzae(1) AAS
今時のバえるレンダリングエフェクトついたゴリゴリのリッチ3Dとかじゃないゲーム
すなわち、個人がフリーでつくるようなゲーム向けとしてはベストチョイスだろうな
ただし"ゲームをつくる事そのもの"ではなく、つくってる風な自分を自慢したいタイプには向かない
872: 09/16(火)16:30 ID:PZc5Vb+f(1) AAS
>>871みたいないっちょ噛みしたいだけの奴にも向かないんじゃない?
godotに限った話じゃなく、どのエンジンも不向きか
873: 09/17(水)11:07 ID:P5VnMNiY(1) AAS
初心者がYoutubeでUEと有料アセット使って「俺すげえ!!」って演出してる動画多いね。
そういうのはGodot向かない。
874: 09/17(水)12:54 ID:poSQVw81(1/2) AAS
おー、4.5結構盛りだくさんだな

2Dに関することは……、デバッグにバックトレース追加、シェーダーベイカー追加、タイルマップレイヤーはフュージョンハッできるようになったし、抽象クラスも追加されたしって感じか
いやー、これは熱い、アップグレードするかあ
875: 09/17(水)13:00 ID:XcG3rzRP(1) AAS
フュージョンハッってドラゴンボールかよw
876: 09/17(水)13:22 ID:poSQVw81(2/2) AAS
リリースノートのサブタイトルにそういうネタ仕込んでくる公式のノリ好きなんだよね
最初意味がよくわかんなかったけど
877: 09/17(水)17:07 ID:l/ra6xty(1) AAS
うぉー!
ペーペーの俺には背景タイルの当たり判定が最適化されたくらいしか分からなかったぜ
878: 09/17(水)19:23 ID:yZVcPIgM(1) AAS
ゲームエンジンとして超小型サイズだからアップデートも一瞬だなw
毎回、新バージョンDLで「あれ?ダウンロード途中で切れた?」と勘違いしてしまうw
879
(1): 09/20(土)09:35 ID:0geIAgeR(1/5) AAS
ゲー制作というより、バックルームみたいな映像作るのだが、unityのほうが楽かね
880: 09/20(土)10:09 ID:dGV4eSt2(1/2) AAS
お好きにどうぞ
881
(1): 09/20(土)10:47 ID:ThIDioy5(1/4) AAS
>>879
何を持って楽というか判らんからなんともだが簡単な録画機能として
UnityはRecorderパッケージが提供されていてGodotはMovie Maker modeが内蔵されている
機能が足りないなら外部ツールを使ったキャプチャーを検討すると良い

昨今は配信者が溢れる時代なのでキャプチャーの解説の方が充実しているのではないかと思う
882
(1): 09/20(土)12:17 ID:0geIAgeR(2/5) AAS
>>881
アセットの豊富さかな
883: 09/20(土)12:30 ID:ThIDioy5(2/4) AAS
>>882
映像作品としてエフェクト盛って加工するって話か?
あいにくUnityでそれ系は触ってないので比較はできないな
丁度ここ最近Godotのそれ周りで遊んでたが用語が判れば難しくはない感じだな
レンダリングの解説に書いてある事が=出来る事で良いと思う
docs.godotengine.org/en/latest/tutorials/3d/index.html#rendering

とはいえ情報量でもアセットでもUnityの方が豊富だろうからUnityが良いんじゃない?
884: 09/20(土)12:45 ID:0geIAgeR(3/5) AAS
そうだね
レトロフィルターとか使って、夢の中っぽい感じにしたいな
aiでやろうとしてたんだけど、なかなか思い通りにならないし、グロ系だとコンプラ的に駄目ってとこが結構ある
885: 09/20(土)13:07 ID:ThIDioy5(3/4) AAS
思ったんだが完全映像作品ならBlenderとか使った方が良いんじゃないか?
Unityも映像作品作れるように強化してるけど歴史的な情報の積み重ねはBlenderに軍配が上がるだろ

>レトロフィルター
そういうのはシェーダー担当だと思うが自分で作れるのでなければ配布されている物を使うしか無い
そういう点ではGodotは弱いな
少ない中から使える物を探さないとならない
886: 09/20(土)13:51 ID:0geIAgeR(4/5) AAS
blenderか
キャラの探索パートってゲームエンジンのほうが楽なんじゃね と思ってた
ゲームエンジンなら今まで通りgodot使うか

road to vostokみたいなやつも作れるなら十分でyそう
887: 09/20(土)14:06 ID:ThIDioy5(4/4) AAS
映像を作り込もうとするならBlenderの方が良いだろうって考えで
自作ゲーム程度の画質で良いならゲームエンジンで事足りる

Godotでのアセット利用に関してはいかんともし難く
シェーダーはAssetLibかgodotshaders.comで公開されているものが見つけやすい
画質をレトロ風例えばPS1風にするシェーダーもある
ただし解説具合がマチマチなので使い方を理解する所から始める必要がある
888
(1): 09/20(土)16:25 ID:0geIAgeR(5/5) AAS
ありがとう
blenderでとりあえず作るなり
ゲーム開発挫折しすぎて飽きたからね
889: 09/20(土)18:58 ID:dGV4eSt2(2/2) AAS
ワナビ2048は質問繰り返しの荒らしだから丁寧に答えんでもいいよ
890: 09/20(土)21:31 ID:z70mFp7/(1) AAS
>>888
飽きたならもう二度と来るなよ
891: 09/20(土)21:40 ID:7mT39V4c(1) AAS
出来もしないのに何を聞いているのかよく分からないオーラが凄い
実現するためのワークフローすら何も思いつかないから「何すればいい?」←何だコイツ???みたいになってて草
892: 09/21(日)16:09 ID:FiHqNokc(1) AAS
画像リンク[png]:i.imgur.com
背景用lora使えば人物でなくなるんだな。ローカル生成AI環境最高だぜ
CreativeML Open RAIL++-Mライセンスも禁止以外は結構緩い
893: 09/28(日)01:19 ID:gJa2pl3Q(1) AAS
ワナビ2000には今まで数多くの人が丁寧に回答してきたが、コイツは何ひとつ形に出来ておらず、すべて踏みにじられている
894: 09/29(月)06:16 ID:ZBPcy6Eg(1/3) AAS
Unityスレでマルチしてるの見た。
このスレで親切にアドバイスしてた人可哀想に
1-
あと 24 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.021s