[過去ログ] 【軽量】godot engine - part2 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
809: 2024/01/28(日)06:15 ID:TmRS1aaH(1/2) AAS
_process()は止まるけど_input()側で入力受付出来なかったっけ

func _input(event):
 if event.is_action_pressed(入力キー):
  get_tree().paused = !get_tree().paused
810
(1): 2024/01/28(日)06:22 ID:pEcrIiHG(2/7) AAS
ありがとうございます
ポーズ画面作る場合はpausedを使うのでいいんですかね?

extends Node2D

# Called when the node enters the scene tree for the first time.
func _ready():
get_tree().paused = true

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _input(event):
if Input.is_key_pressed(KEY_A):
get_tree().paused = !get_tree().paused
print("release")

今試したんですが、インプットでも受け付けないみたいです
811
(1): 2024/01/28(日)06:56 ID:TmRS1aaH(2/2) AAS
>>810
すまねえこういう事だった
ノードのProcessModeがWhenPausedかAlwaysじゃなきゃ_processも_inputも止まると
外部リンク[html]:docs.godotengine.org

ちゃんと一時停止の例まで載ってた
812: 2024/01/28(日)09:59 ID:pEcrIiHG(3/7) AAS
>>811
ポーズモードという仕組みあるんすね
ありがとうございました
リファレンス避けてた自分が悪かたです
813: 2024/01/28(日)12:20 ID:pEcrIiHG(4/7) AAS
gptくんグーグルより的確すぎる
814: 2024/01/28(日)13:07 ID:pEcrIiHG(5/7) AAS
func _on_body_entered(body):
fail_text.visible = true

get_tree().paused = true
await(get_tree().create_timer(2).timeout)

get_tree().reload_current_scene()
get_tree().paused = false

衝突したときにリトライ処理をさせたいのですが、こういうコードの書き方だとシーンがリロードされたあとにbodyenterdが呼ばれるので、エラーになりますよね。
シーンがリロードされる前にポーズモードを戻したら解決ですが、シーンりろーどで単純にbodyenterd関数が破棄されると考えればいいんでしょうか?
シーン周りが難しい、、、
815: 2024/01/28(日)17:01 ID:pEcrIiHG(6/7) AAS
4.21になってからノード追加するときとか数秒もたつくな
816: 2024/01/28(日)17:51 ID:pEcrIiHG(7/7) AAS
スクリプトのついていないノードを複数取得して、同じ回転を適用するみたいなことは出来ないかな?
これは別シーンで作って呼び出す形でやるのかな?プレファブ的な
817
(1): 2024/01/28(日)22:35 ID:YtecBqKa(1) AAS
Object.get_script でnullが返るノードを処理すればいいけど
グループに入れておい一括処理すればいいんでね
818: 2024/01/29(月)05:49 ID:Egx9C970(1/4) AAS
>>817
ありがとう
多分一般的なやり方じゃないですよね
同じものを使いまわしたいならプレハブ化(シーン)するのが一番ですよね
819: 2024/01/29(月)05:57 ID:Egx9C970(2/4) AAS
動きは共通で、大きさだけ変えたいなんて場合は、スクリプトだけ共通にすればいい感じだね
理解
820: 2024/01/29(月)11:11 ID:rbb+bJBP(1) AAS
スクリプトからインスタンス化すると2つ目以降のノード名がへんてこになるからどうやって取得したもんかと思ってたけど
グループで行けたわ、なるほどありがとう
821: 2024/01/29(月)16:55 ID:Egx9C970(3/4) AAS
ゲームエンジンってどれも似たようなもんかな
将来、ユニティに戻るかもしれんし

今は軽さ、手軽さ重視
pcもちょい古いしな(*´ω`*)
822
(1): 2024/01/29(月)19:48 ID:Egx9C970(4/4) AAS
godotってノードの一時的な無効化って出来ないのかな?
目玉マーク押すと非表示にはなるけど、コリジョンとか残ってるし
823
(1): 2024/01/30(火)02:03 ID:qihJ4G8z(1) AAS
基本的には似たようなもん
覚えた要素がアップデートで変わるだけで混乱する人も居るので人による
824: 2024/01/30(火)10:12 ID:94z45r+P(1/2) AAS
>>822
目玉マークは視覚的に消すだけなんだね
コリジョンなんかの機能を消すには、プロセスのdisableか

>>823

どうも
825: 2024/01/30(火)12:17 ID:94z45r+P(2/2) AAS
動く床と壁粘着ってけっこうめんどいな
動く方向が同じだとひっついてトレなくなる
826: 2024/02/01(木)10:46 ID:d1tWUBD1(1/3) AAS
エラーしたコード書くとウインドウがフリーズするけども、いちいち閉じるのが面倒なんですが、unityのようにエラーがあったらプレイ出来ないような設定にできますかね?
827
(1): 2024/02/01(木)13:03 ID:RbvII5uE(1/2) AAS
状況が判らないなエラーコード書いたらハイライト表示されてフリーズはしないが
828: 2024/02/01(木)15:11 ID:d1tWUBD1(2/3) AAS
親ノードのスクリプトから子ノードを取得して、子ノード(rigidbody2d)のメソッドを使いたいのですが、この場合はオートコンプリートは出ないものですか?(apply_impulse)
子ノードにスクリプトつけて、そこからなら効くんですが

>>827
プレイ画面のことでした
エディターのエラーを見て実行しなければいいだけなんですけどもね
829
(1): 2024/02/01(木)15:57 ID:RbvII5uE(2/2) AAS
ノードをget_nodeで取得していると仮定するとこうかな
var node = get_node(path) as RigidBody2D

エラーがあっても可能な限り止まらないで動作させるポリシーらしいので
動かす動かさないは利用者に委ねられるのでしょう
830
(1): 2024/02/01(木)19:13 ID:wFSVR3t/(1) AAS
みんなgodotでシコシコどんなゲーム作ってるん?
ちなみに俺は何も作ってない
831: 2024/02/01(木)19:51 ID:d1tWUBD1(3/3) AAS
>>829
その書き方でいけました
しかし、readyの中だと出るのにprocessの中だとでません
これって正常な仕様なんでしょうか?
832: 2024/02/01(木)20:58 ID:2YEqIkXl(1) AAS
var a : RigidBody2D
こうじゃないの
ダックタイピングしないときは型は書いた方がいい、可読性が全然違う
833
(1): 2024/02/01(木)21:13 ID:Fw0MlK/N(1) AAS
短くしたかったので一行に纏めたのが良くなかった
宣言と初期設定と使用が分かれるならこんな感じ
_readyの中で型指定しても_processからは見えないから上位で型指定する
var node:RigidBody2D
func _ready()
node = get_node(path)
func _process(_delta):
node.apply_impulse(impuls)
834
(1): 2024/02/01(木)22:23 ID:9xF8Tfdc(1) AAS
>>830
寒いからやってない
ローグライクゲームのダッシュって実装がめんどくさいな
835: 2024/02/02(金)00:02 ID:csXE6Gch(1/2) AAS
自分はreadyの中でよそのシーンをインスタンス化しても何故かシーンツリーに登録されないから
だんだんready使わなくなったなあ
readyは全ノード読み込み済みの最初のアップデートと云うけれど、なんか挙動が掴み切れないというか
836
(1): 2024/02/02(金)01:00 ID:1cSrS8bV(1/13) AAS
多分ノードツリーを変更する場合はcall_deferredを挟むのと良いのではないかな?知らんけど
837: 2024/02/02(金)01:57 ID:csXE6Gch(2/2) AAS
>>836
こんな感じに書き換えたら行けましたぞ
ありがとう!
func _ready():
node = node_scene.instaniate()
get_tree().root.call_deferred("add_child, node)

ちなみにルートにぶら下げないで、単に
func _ready():
node = node_scene.instaniate()
add_child(node)
って書いても無事にインスタンス化された
ルートの準備okなタイミングがスクリプトより遅いとかそんな感じなのかな
838: 2024/02/02(金)02:19 ID:1cSrS8bV(2/13) AAS
root配下の全ノードを処理している最中にノードの変更があった場合にどうするのが正しいのか?
ノード変更のタイミングによってノードがあったりなかったりすると不安定な挙動になる
なので確実に_readyや_process等のノード処理の完了後に動作させる為にcall_deferredを使う
add_child(node)で動くのはたまたまな可能性があるのでcall_deferredお勧め
1-
あと 164 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.021s