[過去ログ] 【軽量】godot engine【無料】 part3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
102: 名前は開発中のものです。 [] 2024/03/06(水) 06:26:28.33 ID:0YKHfOtY(1/5) AAS
>>9999(1): 名前は開発中のものです。 [] 2024/03/05(火) 13:32:23.84 ID:LGdF4KOk(1) AAS
図表が何の例なのかが判らないのでそれとは違う話をする
GUIアプリはライフサイクルに従って動作する
Godotの良い例が見つからなかったのでUnityのライフサイクルを元に話を進める
外部リンク[html]:docs.unity3d.com
図中の処理を以下の様に読み替えて欲しい
Awake=_init()
Start=_ready()
FixedUpdate=_physics_process()
OnMouseXXX=_input()
Update=_process()
ここで注視するのは画面描画のタイミングでそれは各種Renderingのステージで行われる
Initialization:初期化
Physics:物理演算
Input events:入力反映
Game logic:ゲーム処理
を経て、それらの処理で作られた描画データを元に描画が行われる
描画後は物理演算から繰り返し
これはUnityの例なのでGodotにおいては実行順が異なる可能性がある
返信遅れてごめんなさい
寝不足でずっと寝てました
>>100100(1): 名前は開発中のものです。 [sage] 2024/03/05(火) 14:58:24.96 ID:2jT49Fhn(1) AAS
そもそもdraw_to_cursor内に描画処理は入ってない
add_pointは後から_draw()で描画される事になる線を構成する点を追加するというだけ
あっそうか、マウスクリック時にしか描画されないという点が問題だったんですね
>>101unity c#より記述量少ないからなくてもいいかもですね
103: 名前は開発中のものです。 [sage] 2024/03/06(水) 06:39:24.06 ID:xC/Ga180(1) AAS
自分は同じような内容列記するときだけ使ってるかな
APIの使い方が間違ってたり、文法がおかしかったりと普段使いはむしろ邪魔
104: 名前は開発中のものです。 [] 2024/03/06(水) 06:45:51.37 ID:0YKHfOtY(2/5) AAS
放物線あと2日くらいで完成させる(*´ω`*)
105(1): 名前は開発中のものです。 [] 2024/03/06(水) 06:49:31.06 ID:0YKHfOtY(3/5) AAS
インテリコードっていう呼び名でしたっけね
106: 名前は開発中のものです。 [] 2024/03/06(水) 17:57:53.24 ID:0YKHfOtY(4/5) AAS
is_mouse_button_pressedはありますけど、
マウスにjust pressed系はないんですかな?
107: 名前は開発中のものです。 [] 2024/03/06(水) 18:12:02.85 ID:0YKHfOtY(5/5) AAS
あっ、action pressのほうでやるんすね ごめんなさい(*´ω`*)
108: 名前は開発中のものです。 [sage] 2024/03/06(水) 18:15:22.40 ID:mNCkxtfo(1) AAS
そもそもjust pressedはactionにしかない
109(1): 名前は開発中のものです。 [] 2024/03/07(木) 14:31:20.08 ID:pWb+fA4v(1) AAS
>>105
IntelliCodeはGDScriptに対応してないね
VSCodeでGDScriptを書いても無理だわ
110: 名前は開発中のものです。 [sage] 2024/03/07(木) 15:51:23.86 ID:qvtd0tl6(1) AAS
今日仕入れた豆知識
ランダムでtrueかfalseの2択を使いたい時
var random : bool = randf() > 0.5
この1行でOK
111: 名前は開発中のものです。 [] 2024/03/08(金) 10:20:06.16 ID:G13/EPQ6(1) AAS
randiの方が早いよ
112(1): 名前は開発中のものです。 [sage] 2024/03/08(金) 15:09:31.48 ID:4aurAYnx(1) AAS
速度詰めるなら(randi() & 1) == 1;とか?
113(1): 軌道予測 [] 2024/03/08(金) 19:43:07.94 ID:vGL0nvHr(1) AAS
軌道予測の者です
考え方として、予測軌道を描きたい場合、軌道予測用のオブジェクトを一度投げないと、ポイントを取得出来ないのではないでしょうか?
物理を使わない場合、方角と力の値があれば、そこから事前に予測出来るのでしょうか?
方法を思いつかなかったので質問させてください
>>109
ですよね(*´ω`*)
114: 名前は開発中のものです。 [sage] 2024/03/08(金) 23:32:43.87 ID:Eb0+PHr0(1/2) AAS
>>69>>8888(1): 名前は開発中のものです。 [sage] 2024/03/04(月) 14:39:30.96 ID:MRQbhd4x(1/4) AAS
>>69
コードをコピペして動かしてみた
予測軌道は描けたが実際のRigidBodyの挙動とは同じにならなかったので調整は必要そう
書かれていない初期設定部分で正しく調整されているのかも知れない
物理エンジンは自分の思い通りに動かない事が多くて悩ましい
の解決法が判った
予想通り初期設定が足りていなかった
RigidBody2Dのcustom_integratorを有効にする事できっちり同じ挙動になった
衝突まで出来たが反射が出来てないので課題は残る
115: 名前は開発中のものです。 [sage] 2024/03/08(金) 23:52:05.37 ID:Eb0+PHr0(2/2) AAS
>>112に補足
速さを求めるなら==は要らない
bool型に代入すると型変換で遅くなるので代入するならint型
var random:int = randi() & 1
しないなら
if randi() & 1:
pass
だけどゲームで使う分には誤差だから判りやすい記述が良いと思う
116(1): 名前は開発中のものです。 [sage] 2024/03/09(土) 00:57:45.63 ID:TY4JoG/O(1/3) AAS
>>113
>物理を使わない場合、方角と力の値があれば、そこから事前に予測出来るのでしょうか?
できる
予測用のオブジェクトを投げなくても計算で求められるが
RigidBodyがやってくれている計算と同等の処理は必要
ノードツリーにSprite2Dがあるとして以下のコードで右上方向に投げた場合の再現ができる
var d:Vector2 = Vector2(500, -500) #初期運動量
func _physics_process(delta: float) -> void:
d += Vector2(0, 980.0 * delta) #運動量に経過時間分の重力加速度を加算
$Sprite2D.position += d * delta #座標に経過時間分の運動量を加算
リアルタイム制のゲームは座標計算→描画を繰り返し行うのが基本
前回の座標計算からの経過時間を元に計算を行う
概ね運動量に経過時間を掛ける事で求められる
117: 名前は開発中のものです。 [sage] 2024/03/09(土) 01:59:11.51 ID:TY4JoG/O(2/3) AAS
言い回しは運動量dじゃなく速度velocityとした方が良いかな?
118: 軌道予測 [] 2024/03/09(土) 06:47:06.36 ID:HzeElu7U(1/3) AAS
初速、方向ベクトル、力、時間の4要素がおそらく必要なんですね
運動方程式物理の本買ったんですけど、数学への抵抗感なくなればいいなぁ(*´ω`*)
119: 軌道予測 [] 2024/03/09(土) 11:31:15.25 ID:HzeElu7U(2/3) AAS
Programmingの理解が遅い人って何が問題なんでしょうか
自分のことですけども
抽象化、というかイメージ化が出来てないのかも
120(1): 名前は開発中のものです。 [sage] 2024/03/09(土) 12:48:53.19 ID:TY4JoG/O(3/3) AAS
理解できないのは理解できるサイズまで対象を分解できていないから
思い描いているイメージを具体化できてない
抽象的かつ大雑把過ぎるので細かい要素に分割する
分割した要素毎に必要な知識を理解する
Peglinを作りたい→軌道予測線を描きたい
線を描くとは→線分を画面に表示する
軌道予測とは→放物運動の開始から終了までの線分を描くための座標を取得する
放物運動とは→等速運動と自由落下する運動
座標の取得とは→放物運動の計算式から得られる
放物運動の計算式とは→(a)物理エンジンから取得するか(b)自前で自前で計算するかの二択
(a)物理エンジンで取得する→RigidBodyを実際に投げた結果から座標を取得する
実際に投げるには→他に影響を与えずに投げた結果を得るには特殊な手法が必要
特殊な手法とは→>>69が提示
(b)自前で計算する→放物運動の計算式を作る
計算式を作る→線分を描くために時間経過毎の座標を取得する→>>116で提示
要素を分解するとこんなもんか?
放物運動の計算は複雑な計算式は不要で時間経過毎に等加速と自由落下を加算するだけ
判らないなら判る所まで分解して考える
121: 軌道予測 [] 2024/03/09(土) 18:53:53.21 ID:HzeElu7U(3/3) AAS
>>120
1つずつ単体テストみたいなことをやるといいんですかね?
122: 名前は開発中のものです。 [sage] 2024/03/10(日) 01:50:55.82 ID:sSa6etmR(1) AAS
コードを書いた時に単体テストする必要なく動くと言える事
勘違いもあるので単体テストばりに実際に確認が取れると尚良い
それが出来るなら理解したと言えるだろう
例えば線を描くならこうなる
これだけだと線分配列pointsの中身が無く動かないが
あれば動くと自信を持って言える
短いコードで動作条件も少ないので実際に動かしてテストするのも容易だろう
var points:Array
$Line2D.clear_points()
for point in points:
$Line2D.add_point(point)
分解した個々の要素が理解できたら次の課題は
目的の機能を実現する為に個々の要素を合成する事に変わる
下位工程の知識が曖昧なまま作業を進めるとやり直しが発生し効率が落ちる
余談になるが線を描く方法はdraw_line()を使う方法もある
CanvasItemクラスの継承が条件でLine2Dの様な子ノードが不要
但し描画処理は_draw()で行う必要がある
func _draw() -> void:
for idx in range(points.size() - 1):
draw_line(points[idx], points[idx + 1], Color.RED, 4)
手法それぞれメリットデメリットが存在するので目的に合わせて選択する
知識が多い方が問題解決方法を多く選択できるので何かと有利に働く
慣れない間は混乱の元にもなるので一つ一つ知識固めをする事を勧める
123: 軌道予測 [] 2024/03/10(日) 09:50:48.90 ID:uoG0dKmX(1) AAS
どうも
必要な要素が把握出来てないのかもですね
線はline2dでやってみます
124: 軌道予測 [] 2024/03/11(月) 14:26:20.28 ID:CzcLH5L4(1) AAS
gdscriptでは関数入れ子はサポートされてないんですかね?
125: 名前は開発中のものです。 [sage] 2024/03/11(月) 23:30:22.40 ID:ZDvnxGD5(1) AAS
されてる
例としてはこんな感じ
func my_function():
var f = func inner_function(x)->String:
return "inner_function called from %s" % [x]
print(f.call("my_function"))
126: 軌道予測 [] 2024/03/12(火) 10:22:31.68 ID:6dOLlAtw(1/2) AAS
myfnctionのプロパティー化しないと駄目ということですかね
上下前次1-新書関写板覧索設栞歴
あと 876 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.014s