[過去ログ] 【軽量】godot engine【無料】 part3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
118: 軌道予測 2024/03/09(土)06:47 ID:HzeElu7U(1/3) AAS
初速、方向ベクトル、力、時間の4要素がおそらく必要なんですね
運動方程式物理の本買ったんですけど、数学への抵抗感なくなればいいなぁ(*´ω`*)
119: 軌道予測 2024/03/09(土)11:31 ID:HzeElu7U(2/3) AAS
Programmingの理解が遅い人って何が問題なんでしょうか
自分のことですけども
抽象化、というかイメージ化が出来てないのかも
120(1): 2024/03/09(土)12:48 ID:TY4JoG/O(3/3) AAS
理解できないのは理解できるサイズまで対象を分解できていないから
思い描いているイメージを具体化できてない
抽象的かつ大雑把過ぎるので細かい要素に分割する
分割した要素毎に必要な知識を理解する
Peglinを作りたい→軌道予測線を描きたい
線を描くとは→線分を画面に表示する
軌道予測とは→放物運動の開始から終了までの線分を描くための座標を取得する
放物運動とは→等速運動と自由落下する運動
座標の取得とは→放物運動の計算式から得られる
放物運動の計算式とは→(a)物理エンジンから取得するか(b)自前で自前で計算するかの二択
(a)物理エンジンで取得する→RigidBodyを実際に投げた結果から座標を取得する
実際に投げるには→他に影響を与えずに投げた結果を得るには特殊な手法が必要
特殊な手法とは→>>69が提示
(b)自前で計算する→放物運動の計算式を作る
計算式を作る→線分を描くために時間経過毎の座標を取得する→>>116で提示
要素を分解するとこんなもんか?
放物運動の計算は複雑な計算式は不要で時間経過毎に等加速と自由落下を加算するだけ
判らないなら判る所まで分解して考える
121: 軌道予測 2024/03/09(土)18:53 ID:HzeElu7U(3/3) AAS
>>120
1つずつ単体テストみたいなことをやるといいんですかね?
122: 2024/03/10(日)01:50 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 ID:uoG0dKmX(1) AAS
どうも
必要な要素が把握出来てないのかもですね
線はline2dでやってみます
124: 軌道予測 2024/03/11(月)14:26 ID:CzcLH5L4(1) AAS
gdscriptでは関数入れ子はサポートされてないんですかね?
125: 2024/03/11(月)23:30 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 ID:6dOLlAtw(1/2) AAS
myfnctionのプロパティー化しないと駄目ということですかね
127: 2024/03/12(火)10:43 ID:Ui38L6jh(1/2) AAS
短いコードなのだから疑問に思ったら自分で試してみれば良いじゃない
var f = func inner_function(x)->String:
return "inner_function called from %s" % [x]
func my_function(name):
print(f.call(name))
公式ドキュメントはこちら
外部リンク[html]:docs.godotengine.org
128: 2024/03/12(火)11:23 ID:Ui38L6jh(2/2) AAS
関数の実体はCallableクラスで変数fに代入しなくても扱えるし引数で渡す事もできる
関数でもループでもifブロックでもネストが増えれば難読化するので不用意には使わない
func _ready():
my_function(external_func)
func external_func(name:String):
return "external_func called from %s" % [name]
func my_function(ext_func:Callable):
print(ext_func.call("my_function"))
129: 軌道予測 2024/03/12(火)15:08 ID:6dOLlAtw(2/2) AAS
ありがとう
今すぐ使うわけじゃないんだけど知識として知りたかったんだ
会話に飢えてるのかも
130: 軌道予測 2024/03/15(金)14:19 ID:z+ILEsEI(1/3) AAS
ペイントソフトの筆のように線を描くのは可能でしょうか?
ペイントソフトってよく見ると点を打ってるんですよね
line2dとそれにコリジョンつけるためのsegment shapeあたりで調べてます
131: 軌道予測 2024/03/15(金)14:44 ID:z+ILEsEI(2/3) AAS
あ、描くのはすんなり行けたナリ(*´ω`*)
132: 軌道予測 2024/03/15(金)20:10 ID:z+ILEsEI(3/3) AAS
外部リンク[html]:docs.godotengine.org
segment shapeで太さは指定出来ないっぽい
となると頂点を打って、ぐるっと囲む感じでコリジョンを作るって感じなのね
133(2): 2024/03/15(金)20:19 ID:v4U5bWGM(1) AAS
カプセルとかの単純形状系でもいけそう
134: 軌道予測 2024/03/16(土)03:54 ID:ECp53ZYt(1/7) AAS
ライン描いてそれをコリジョン化する感じ
unityならアセットでサクッとできるんだけろうけど、godotだとサンプルが少ないナリ
135: 軌道予測 2024/03/16(土)09:40 ID:ECp53ZYt(2/7) AAS
>>133
Q REMASTEREDとか、あれを単純図形でいけるかな?
まあペイントソフトも玉のテクスチャを連続させてるだけだよね
136: 軌道予測 2024/03/16(土)12:06 ID:ECp53ZYt(3/7) AAS
画像リンク
単純図形をフレームごとにadd_childしてるのじゃが、一定間隔でadd_childしたとしてもつながるほど短い間隔になる保証はないのだけど、何か方法はありますかね?
137: 軌道予測 2024/03/16(土)12:16 ID:ECp53ZYt(4/7) AAS
elapseTime+=delta
if elapseTime >= 0.001:
print("hoge")
たとえばelapseTimeでこんなふうにして実行しても、フレーム以上の描画スピードにはならんわけよね(*´ω`*)
138(1): 2024/03/16(土)13:03 ID:+bq7XejG(1) AAS
2点の線の間を埋めたい時は線形補完を使用する
Vector2にlerp()という線形補完メソッドがある
2点の位置ベクトルaとbが存在する時
for t in range(10):
var p = a.lerp(b, 0.1 * t)
でa-b間を通る位置ベクトルpを10得られる
公式ドキュメント
外部リンク[html]:docs.godotengine.org
139: 軌道予測 2024/03/16(土)13:13 ID:ECp53ZYt(5/7) AAS
多分、描いた線をコリジョン化したい場合は、ジオメトリー系を使うみたいです
今から調べます
140: 2024/03/16(土)13:42 ID:33L2QT9a(1) AAS
Qは一定間隔で円なの普通に見てわかるな
>>133でカプセルっつってんだからカプセルか間に長方形挟むでもいいと思うけど直線がダメか
141: 軌道予測 2024/03/16(土)14:03 ID:ECp53ZYt(6/7) AAS
1フレームあたり座標をずらしたものを複数個追加する方法でいけるかもね
142: 軌道予測 2024/03/16(土)17:55 ID:ECp53ZYt(7/7) AAS
↑駄目だった
やっぱりカーソル早く動かすと1フレームあたりの描画量が足りなくて、点々になっちまう(*´ω`*)、、、、
ジオメトリあたり試してみるナリが、godotの場合、線を引いてそれにコリジョンをつけるには何の機能がいいの?
143: 軌道予測 2024/03/18(月)06:18 ID:sBH5kPda(1/4) AAS
line2dにコリジョンつけたいんだけど、方法ある?
segmentshapeで太さ出せるだろうか?
144: 2024/03/18(月)12:34 ID:/glnBgCG(1/3) AAS
SegmentShape2Dで太さは指定できない
厚みを持たせるなら元ネタ同様に球を並べるか二点を通るポリゴンを自分で作る
二点の中点にRectangleShape2Dを置いて傾けるという方法でも可能
145: 2024/03/18(月)13:18 ID:/glnBgCG(2/3) AAS
端の処理を考えたらCaosuleShape2Dの方が綺麗にできる
146: 軌道予測 2024/03/18(月)13:26 ID:sBH5kPda(2/4) AAS
rectangleshape2dだと曲線とか難しそうですね
玉連続の場合、1フレームあたりに複数個追加しないと玉が飛ぶんですが、どういうやり方があるんでしょうか。
147: 2024/03/18(月)13:30 ID:/glnBgCG(3/3) AAS
使える情報は前フレームの座標と現フレームの座標
フレーム間の座標は自分で作るしかない
回答は>>138
上下前次1-新書関写板覧索設栞歴
あと 855 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.018s