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

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1
(6): 2024/07/31(水)07:46 ID:fxP1vISb(1/7) AAS
Godotエンジンは機能豊富な、クロスプラットフォームのゲームエンジンであり、2D・3Dゲームを単一のインターフェイスで製作することができます。
基本的なツールは一通り用意され、ユーザーはプログラムの再発明をすることなくゲーム製作に集中できます。
製作したゲームは主要なデスクトップ環境(Linux, MacOS, Windows)や、モバイル(Android, iOS)、Webベース(HTML5)環境にワンクリックで書き出せます。

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

■公式サイト
外部リンク:godotengine.org
省8
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 コンストラクタの第一引数に実行したいメソッドを持つオブジェクト、第二引数に実行したいメソッドを記述します。
これらの引数はそれぞれ第一引数はオブジェクト参照、第二引数はそのオブジェクトが持つメソッド名(文字列)となります。

Godot 4.x では以下のような 3.x の (target, method_name) 形式は廃止され、第2引数に Callable を渡すことが必須になりました。
省8
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に切り替えるって流れかな
オンオフで対応したほうがシンプルでいいかな

こういう論理的思考が壊滅的に出来ないみたい
練習方法ない?
826: 08/21(木)14:59 ID:OYDY07jx(3/8) AAS
自分が理解できない物を論理的に考えるのは無理なのでまず自分が理解できる所まで単純化する
コンピュータを指示通りに動く人として捉える
相手に自分の考えを伝えるには相手が理解できる言葉を使う
相手がどこまで理解できているかを想像する

>>325の例題を要約すると以下の感じであってるかな?
「アクティブ時にのみ操作可能なキャタクターが複数存在する」
「操作キャラクターが操作可能キャラクターに衝突すると操作権が衝突した相手に移る」
相手が理解しやすい単純な説明を心がける
まず概要を伝えて会話する為の基礎を築く
シグナルとかArea2Dだとか複雑な話題はなくて良い
省4
827: 08/21(木)15:00 ID:OYDY07jx(4/8) AAS
>>325でなくて>>825だったわ
828
(1): 08/21(木)15:57 ID:OYDY07jx(5/8) AAS
必要なのかどうか判らんが>>825の制御方法を回答するなら以下かな
操作可能キャラクターに現在操作権があるかどうかを判定するアクティブフラグを持たせる
操作はフラグが有効な場合にのみ処理する
衝突シグナルの発呼はフラグが有効な場合にのみ処理する
衝突シグナル発呼後にフラグを無効にする
衝突シグナル着呼時にフラグを有効にする
829
(1): 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で呼ぶ
自分で使うならこう書くんだけど行儀が良くないコードなので実用するなら適宜直してね

(func():gm.active_char = other_char).call_deferred()
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.019s