[過去ログ] 【軽量】godot engine【無料】 part3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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のプロパティー化しないと駄目ということですかね
127: 名前は開発中のものです。 [sage] 2024/03/12(火) 10:43:32.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: 名前は開発中のものです。 [sage] 2024/03/12(火) 11:23:29.64 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:54.31 ID:6dOLlAtw(2/2) AAS
ありがとう
今すぐ使うわけじゃないんだけど知識として知りたかったんだ
会話に飢えてるのかも
130: 軌道予測 [] 2024/03/15(金) 14:19:26.75 ID:z+ILEsEI(1/3) AAS
ペイントソフトの筆のように線を描くのは可能でしょうか?
ペイントソフトってよく見ると点を打ってるんですよね
line2dとそれにコリジョンつけるためのsegment shapeあたりで調べてます
131: 軌道予測 [] 2024/03/15(金) 14:44:55.65 ID:z+ILEsEI(2/3) AAS
あ、描くのはすんなり行けたナリ(*´ω`*)
132: 軌道予測 [] 2024/03/15(金) 20:10:53.69 ID:z+ILEsEI(3/3) AAS
外部リンク[html]:docs.godotengine.org
segment shapeで太さは指定出来ないっぽい
となると頂点を打って、ぐるっと囲む感じでコリジョンを作るって感じなのね
133(2): 名前は開発中のものです。 [sage] 2024/03/15(金) 20:19:43.83 ID:v4U5bWGM(1) AAS
カプセルとかの単純形状系でもいけそう
134: 軌道予測 [] 2024/03/16(土) 03:54:55.34 ID:ECp53ZYt(1/7) AAS
ライン描いてそれをコリジョン化する感じ
unityならアセットでサクッとできるんだけろうけど、godotだとサンプルが少ないナリ
135: 軌道予測 [] 2024/03/16(土) 09:40:56.08 ID:ECp53ZYt(2/7) AAS
>>133
Q REMASTEREDとか、あれを単純図形でいけるかな?
まあペイントソフトも玉のテクスチャを連続させてるだけだよね
上下前次1-新書関写板覧索設栞歴
あと 867 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.017s