[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/23 21:54 / Filesize : 257 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【軽量】godot engine【無料】 part3



1 名前:名前は開発中のものです。 [2024/02/17(土) 09:51:54.18 ID:lpQfy7dC.net]
Godotエンジンは機能豊富な、クロスプラットフォームのゲームエンジンであり、2D・3Dゲームを単一のインターフェイスで製作することができます。
基本的なツールは一通り用意され、ユーザーはプログラムの再発明をすることなくゲーム製作に集中できます。
製作したゲームは主要なデスクトップ環境(Linux, MacOS, Windows)や、モバイル(Android, iOS)、Webベース(HTML5)環境にワンクリックで書き出せます。

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

■公式サイト
https://godotengine.org/
■コミュニティ
https://godotengine.org/community/
■ドキュメント
https://docs.godotengine.org/ja/4.x/
■こんなのが作れるよ
https://www.youtube.com/watch?v=W1_zKxYEP6Q
https://www.youtube.com/watch?v=UAS_pUTFA7o
https://www.youtube.com/watch?v=ao34A0Y2x6c
■前スレ
【軽量】godot engine - part2
https://mevius.5ch.net/test/read.cgi/gamedev/1619755427/
★次スレは>>950がたててください

110 名前:名前は開発中のものです。 [2024/03/07(木) 14:31:20.08 ID:pWb+fA4v.net]
>>105
IntelliCodeはGDScriptに対応してないね
VSCodeでGDScriptを書いても無理だわ

111 名前:名前は開発中のものです。 mailto:sage [2024/03/07(木) 15:51:23.86 ID:qvtd0tl6.net]
今日仕入れた豆知識
ランダムでtrueかfalseの2択を使いたい時
 var random : bool = randf() > 0.5
この1行でOK

112 名前:名前は開発中のものです。 [2024/03/08(金) 10:20:06.16 ID:G13/EPQ6.net]
randiの方が早いよ

113 名前:名前は開発中のものです。 mailto:sage [2024/03/08(金) 15:09:31.48 ID:4aurAYnx.net]
速度詰めるなら(randi() & 1) == 1;とか?

114 名前:軌道予測 [2024/03/08(金) 19:43:07.94 ID:vGL0nvHr.net]
軌道予測の者です
考え方として、予測軌道を描きたい場合、軌道予測用のオブジェクトを一度投げないと、ポイントを取得出来ないのではないでしょうか?
物理を使わない場合、方角と力の値があれば、そこから事前に予測出来るのでしょうか?
方法を思いつかなかったので質問させてください

>>109
ですよね(*´ω`*)

115 名前:名前は開発中のものです。 mailto:sage [2024/03/08(金) 23:32:43.87 ID:Eb0+PHr0.net]
>>69
>>88の解決法が判った
予想通り初期設定が足りていなかった
RigidBody2Dのcustom_integratorを有効にする事できっちり同じ挙動になった
衝突まで出来たが反射が出来てないので課題は残る

116 名前:名前は開発中のものです。 mailto:sage [2024/03/08(金) 23:52:05.37 ID:Eb0+PHr0.net]
>>112に補足
速さを求めるなら==は要らない
bool型に代入すると型変換で遅くなるので代入するならint型
var random:int = randi() & 1
しないなら
if randi() & 1:
pass
だけどゲームで使う分には誤差だから判りやすい記述が良いと思う

117 名前:名前は開発中のものです。 mailto:sage [2024/03/09(土) 00:57:45.63 ID:TY4JoG/O.net]
>>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 #座標に経過時間分の運動量を加算

リアルタイム制のゲームは座標計算→描画を繰り返し行うのが基本
前回の座標計算からの経過時間を元に計算を行う
概ね運動量に経過時間を掛ける事で求められる

118 名前:名前は開発中のものです。 mailto:sage [2024/03/09(土) 01:59:11.51 ID:TY4JoG/O.net]
言い回しは運動量dじゃなく速度velocityとした方が良いかな?



119 名前:軌道予測 [2024/03/09(土) 06:47:06.36 ID:HzeElu7U.net]
初速、方向ベクトル、力、時間の4要素がおそらく必要なんですね


運動方程式物理の本買ったんですけど、数学への抵抗感なくなればいいなぁ(*´ω`*)

120 名前:軌道予測 [2024/03/09(土) 11:31:15.25 ID:HzeElu7U.net]
Programmingの理解が遅い人って何が問題なんでしょうか
自分のことですけども

抽象化、というかイメージ化が出来てないのかも

121 名前:名前は開発中のものです。 mailto:sage [2024/03/09(土) 12:48:53.19 ID:TY4JoG/O.net]
理解できないのは理解できるサイズまで対象を分解できていないから
思い描いているイメージを具体化できてない
抽象的かつ大雑把過ぎるので細かい要素に分割する
分割した要素毎に必要な知識を理解する

Peglinを作りたい→軌道予測線を描きたい
線を描くとは→線分を画面に表示する
軌道予測とは→放物運動の開始から終了までの線分を描くための座標を取得する
放物運動とは→等速運動と自由落下する運動

座標の取得とは→放物運動の計算式から得られる
放物運動の計算式とは→(a)物理エンジンから取得するか(b)自前で自前で計算するかの二択
(a)物理エンジンで取得する→RigidBodyを実際に投げた結果から座標を取得する
実際に投げるには→他に影響を与えずに投げた結果を得るには特殊な手法が必要
特殊な手法とは→>>69が提示
(b)自前で計算する→放物運動の計算式を作る
計算式を作る→線分を描くために時間経過毎の座標を取得する→>>116で提示

要素を分解するとこんなもんか?
放物運動の計算は複雑な計算式は不要で時間経過毎に等加速と自由落下を加算するだけ
判らないなら判る所まで分解して考える

122 名前:軌道予測 [2024/03/09(土) 18:53:53.21 ID:HzeElu7U.net]
>>120
1つずつ単体テストみたいなことをやるといいんですかね?

123 名前:名前は開発中のものです。 mailto:sage [2024/03/10(日) 01:50:55.82 ID:sSa6etmR.net]
コードを書いた時に単体テストする必要なく動くと言える事
勘違いもあるので単体テストばりに実際に確認が取れると尚良い
それが出来るなら理解したと言えるだろう

例えば線を描くならこうなる
これだけだと線分配列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

124 名前: in range(points.size() - 1):
draw_line(points[idx], points[idx + 1], Color.RED, 4)

手法それぞれメリットデメリットが存在するので目的に合わせて選択する
知識が多い方が問題解決方法を多く選択できるので何かと有利に働く
慣れない間は混乱の元にもなるので一つ一つ知識固めをする事を勧める
[]
[ここ壊れてます]

125 名前:軌道予測 [2024/03/10(日) 09:50:48.90 ID:uoG0dKmX.net]
どうも
必要な要素が把握出来てないのかもですね

線はline2dでやってみます

126 名前:軌道予測 [2024/03/11(月) 14:26:20.28 ID:CzcLH5L4.net]
gdscriptでは関数入れ子はサポートされてないんですかね?

127 名前:名前は開発中のものです。 mailto:sage [2024/03/11(月) 23:30:22.40 ID:ZDvnxGD5.net]
されてる
例としてはこんな感じ
func my_function():
var f = func inner_function(x)->String:
return "inner_function called from %s" % [x]
print(f.call("my_function"))

128 名前:軌道予測 [2024/03/12(火) 10:22:31.68 ID:6dOLlAtw.net]
myfnctionのプロパティー化しないと駄目ということですかね



129 名前:名前は開発中のものです。 mailto:sage [2024/03/12(火) 10:43:32.43 ID:Ui38L6jh.net]
短いコードなのだから疑問に思ったら自分で試してみれば良いじゃない
var f = func inner_function(x)->String:
return "inner_function called from %s" % [x]
func my_function(name):
print(f.call(name))

公式ドキュメントはこちら
https://docs.godotengine.org/ja/4.x/classes/class_callable.html

130 名前:名前は開発中のものです。 mailto:sage [2024/03/12(火) 11:23:29.64 ID:Ui38L6jh.net]
関数の実体は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"))

131 名前:軌道予測 [2024/03/12(火) 15:08:54.31 ID:6dOLlAtw.net]
ありがとう
今すぐ使うわけじゃないんだけど知識として知りたかったんだ
会話に飢えてるのかも

132 名前:軌道予測 [2024/03/15(金) 14:19:26.75 ID:z+ILEsEI.net]
ペイントソフトの筆のように線を描くのは可能でしょうか?
ペイントソフトってよく見ると点を打ってるんですよね

line2dとそれにコリジョンつけるためのsegment shapeあたりで調べてます

133 名前:軌道予測 [2024/03/15(金) 14:44:55.65 ID:z+ILEsEI.net]
あ、描くのはすんなり行けたナリ(*´ω`*)

134 名前:軌道予測 [2024/03/15(金) 20:10:53.69 ID:z+ILEsEI.net]
https://docs.godotengine.org/ja/4.x/classes/class_segmentshape2d.html
segment shapeで太さは指定出来ないっぽい
となると頂点を打って、ぐるっと囲む感じでコリジョンを作るって感じなのね

135 名前:名前は開発中のものです。 mailto:sage [2024/03/15(金) 20:19:43.83 ID:v4U5bWGM.net]
カプセルとかの単純形状系でもいけそう

136 名前:軌道予測 [2024/03/16(土) 03:54:55.34 ID:ECp53ZYt.net]
ライン描いてそれをコリジョン化する感じ
unityならアセットでサクッとできるんだけろうけど、godotだとサンプルが少ないナリ

137 名前:軌道予測 [2024/03/16(土) 09:40:56.08 ID:ECp53ZYt.net]
>>133
Q REMASTEREDとか、あれを単純図形でいけるかな?
まあペイントソフトも玉のテクスチャを連続させてるだけだよね

138 名前:軌道予測 [2024/03/16(土) 12:06:33.95 ID:ECp53ZYt.net]
https://imgur.com/a/KTYggOG
単純図形をフレームごとにadd_childしてるのじゃが、一定間隔でadd_childしたとしてもつながるほど短い間隔になる保証はないのだけど、何か方法はありますかね?



139 名前:軌道予測 [2024/03/16(土) 12:16:39.25 ID:ECp53ZYt.net]
elapseTime+=delta
if elapseTime >= 0.001:
print("hoge")
たとえばelapseTimeでこんなふうにして実行しても、フレーム以上の描画スピードにはならんわけよね(*´ω`*)

140 名前:名前は開発中のものです。 mailto:sage [2024/03/16(土) 13:03:45.25 ID:+bq7XejG.net]
2点の線の間を埋めたい時は線形補完を使用する
Vector2にlerp()という線形補完メソッドがある

2点の位置ベクトルaとbが存在する時
for t in range(10):
var p = a.lerp(b, 0.1 * t)
でa-b間を通る位置ベクトルpを10得られる

公式ドキュメント
https://docs.godotengine.org/ja/4.x/tutorials/math/interpolation.html

141 名前:軌道予測 [2024/03/16(土) 13:13:32.53 ID:ECp53ZYt.net]
多分、描いた線をコリジョン化したい場合は、ジオメトリー系を使うみたいです
今から調べます

142 名前:名前は開発中のものです。 mailto:sage [2024/03/16(土) 13:42:11.02 ID:33L2QT9a.net]
Qは一定間隔で円なの普通に見てわかるな
>>133でカプセルっつってんだからカプセルか間に長方形挟むでもいいと思うけど直線がダメか

143 名前:軌道予測 [2024/03/16(土) 14:03:51.94 ID:ECp53ZYt.net]
1フレームあたり座標をずらしたものを複数個追加する方法でいけるかもね

144 名前:軌道予測 [2024/03/16(土) 17:55:12.95 ID:ECp53ZYt.net]
↑駄目だった
やっぱりカーソル早く動かすと1フレームあたりの描画量が足りなくて、点々になっちまう(*´ω`*)、、、、
ジオメトリあたり試してみるナリが、godotの場合、線を引いてそれにコリジョンをつけるには何の機能がいいの?

145 名前:軌道予測 [2024/03/18(月) 06:18:37.02 ID:sBH5kPda.net]
line2dにコリジョンつけたいんだけど、方法ある?
segmentshapeで太さ出せるだろうか?

146 名前:名前は開発中のものです。 mailto:sage [2024/03/18(月) 12:34:34.92 ID:/glnBgCG.net]
SegmentShape2Dで太さは指定できない
厚みを持たせるなら元ネタ同様に球を並べるか二点を通るポリゴンを自分で作る
二点の中点にRectangleShape2Dを置いて傾けるという方法でも可能

147 名前:名前は開発中のものです。 mailto:sage [2024/03/18(月) 13:18:28.54 ID:/glnBgCG.net]
端の処理を考えたらCaosuleShape2Dの方が綺麗にできる

148 名前:軌道予測 [2024/03/18(月) 13:26:05.86 ID:sBH5kPda.net]
rectangleshape2dだと曲線とか難しそうですね
玉連続の場合、1フレームあたりに複数個追加しないと玉が飛ぶんですが、どういうやり方があるんでしょうか。



149 名前:名前は開発中のものです。 mailto:sage [2024/03/18(月) 13:30:42.80 ID:/glnBgCG.net]
使える情報は前フレームの座標と現フレームの座標
フレーム間の座標は自分で作るしかない
回答は>>138

150 名前:軌道予測 [2024/03/18(月) 13:40:45.88 ID:sBH5kPda.net]
どうも
玉手法はgptに聞いてみます

線形補間もやってみます

151 名前:軌道予測 [2024/03/18(月) 19:15:29.31 ID:sBH5kPda.net]
こういうときはunityでのやり方を調べると参考になるかもですね
godotだとやはり情報が少ないっす

152 名前:軌道予測 [2024/03/19(火) 14:44:11.82 ID:D3Qdtv84.net]
https://www.youtube.com/watch?v=L3Lls9fY6s4
このゲームのラインって玉の連続と上で教えてもらったんですが、どこを見ると玉ということが分かりますか?
玉であってもコリジョンを曖昧にすればいけそうですね

153 名前:名前は開発中のものです。 mailto:sage [2024/03/19(火) 15:20:17.53 ID:n2087dMP.net]
引ける線が無制限のつもりならgd_paintみたいなお絵描き機能実装してopaque_to_polygonsの方がいいかも

154 名前:軌道予測 [2024/03/19(火) 17:15:47.28 ID:D3Qdtv84.net]
無制限とはどういうことですか?
色をポリゴン化する機能は知りませんでした

155 名前:名前は開発中のものです。 mailto:sage [2024/03/19(火) 17:55:59.32 ID:n2087dMP.net]
ドラッグで線を描くとして、線を引いてる間に毎フレーム線や円を追加してるとそのうちオブジェクト数がえらい事になる

156 名前:名前は開発中のものです。 [2024/03/19(火) 18:44:46.90 ID:hE1w1zmY.net]
えらい数になる前に点を間引いたり直線近似するんよね

157 名前:軌道予測 [2024/03/20(水) 09:55:11.93 ID:o2i+3Cka.net]
球が増えすぎると重くなるとしたら、ラインのながさを制限するなりしないとだめってことですよね
それもゲーム性にすりゃいいかもです

158 名前:軌道予測 [2024/03/20(水) 09:55:52.73 ID:o2i+3Cka.net]
点の連続で線を描くというのは一般的な方法なんでしょうか。
点が飛ぶのは、lerpでどうにか補完できないか考えてます



159 名前:軌道予測 [2024/03/21(木) 11:09:56.75 ID:IgSPnTWH.net]
godotで3dゲーム作るのはあり?
お遊びだけどさ

160 名前:軌道予測 [2024/03/21(木) 13:13:49.23 ID:IgSPnTWH.net]
やっぱホワイトボックスレベルでも3d作るのは大変だと感じるナリ

161 名前:名前は開発中のものです。 mailto:sage [2024/03/21(木) 16:40:50.08 ID:XmwxGLbE.net]
Godotで3Dゲームを作るの

162 名前:が無しだったら>>1の作例は無いだろう
3Dの方が要求知識が増えるので簡単とは言わないが苦手意識が強すぎる様に思う

3Dでもカメラを固定して一軸を全く使わなければ2Dとほぼ同じ扱いになる
3Dを使ったエフェクトが使いやすくなるのでメリットもある
[]
[ここ壊れてます]

163 名前:軌道予測 [2024/03/21(木) 18:06:43.28 ID:IgSPnTWH.net]
まあね
完成させられないで失敗しかしてないから

164 名前:名前は開発中のものです。 mailto:sage [2024/03/21(木) 23:24:33.92 ID:XmwxGLbE.net]
少なくとも自分で調べたり聞いた結果
線の引き方は覚えたし内容は理解しきれなくとも線形補完という手法も知った
以前と比べれば何かした分は成長している
how-toを聞いただけで理解して使いこなせたら秀才
使いこなせないのは知識も経験も足りないからで功を焦りすぎ

165 名前:名前は開発中のものです。 mailto:sage [2024/03/21(木) 23:30:23.01 ID:XmwxGLbE.net]
点と点の間の線を引く際に不足する点を補完する方法が線形補完
線を引く上では一般的と言えるがゲームでの利用においては制限があるのは指摘されている通り
制限が問題になるなら対策を打つなり別方法を使用する事になる

166 名前:軌道予測 [2024/03/22(金) 14:16:19.70 ID:jsxrvFIK.net]
コツコツやってきます
興味が長続きしないので解決しなくても課題は定期的に変えますが、、、それが問題

167 名前:軌道予測 [2024/03/22(金) 20:17:17.38 ID:jsxrvFIK.net]
godotのコードサンプルってどこで手に入りますか?
kids can codeはたまに見ますが

168 名前:名前は開発中のものです。 mailto:sage [2024/03/22(金) 22:12:21.80 ID:YF/BaExa.net]
公式のデモプロジェクト
https://github.com/godotengine/godot-demo-projects?tab=readme-ov-file
細かく解説されている訳ではないので読み解くのは大変だが物量はある
GodotEngineのバージョンで差異があるのでコードを参考にするなら対象バージョンのブランチを選ぶ
全てではないがブラウザで動かせるので手っ取り早くイメージを掴める
https://godotengine.github.io/godot-demo-projects/



169 名前:軌道予測 [2024/03/23(土) 10:59:33.56 ID:apw+jUEF.net]
geometry2dってポリゴン2dみたいにポリゴンを描くクラスと考えていいんでしょうか
まだ使い方が分かってない
ただ、シングルトンではあるみたいです


>>165
ありがとう

170 名前:軌道予測 [2024/03/23(土) 11:40:20.63 ID:apw+jUEF.net]
geometry2d自体は頂点を生成するだけで、ポリゴンはcollisionpolygon使うみたいですね

171 名前:名前は開発中のものです。 mailto:sage [2024/03/23(土) 13:42:14.97 ID:uy0YEbAb.net]
3dのローポリ作品多いけど、リアルにしたらエンジン的にキツいんかな?

172 名前:名前は開発中のものです。 mailto:sage [2024/03/23(土) 14:40:47.81 ID:OOg18fNS.net]
ハイポリモデルを使うのがキツイのはエンジンじゃなくてマンパワーでしょ

173 名前:軌道予測 [2024/03/23(土) 18:16:55.69 ID:apw+jUEF.net]
最新のgptは有料じゃないと使えないのかな
godot4についてはデータベースがないみたい

copilot使ってみるけど、他におすすめある?

174 名前:軌道予測 [2024/03/23(土) 19:49:59.54 ID:apw+jUEF.net]
geometry2dのoffset_polylineについて質問なんですけど、この関数にポリラインの配列を渡すとなぜか2次元配列で帰って来るのですが、なぜでしょうか
https://docs.godotengine.org/en/stable/classes/class_geometry2d.html#class-geometry2d-method-offset-polyline
返り値をcollisionPolygon2dに代入して使いたいのですが
collisionPolygon2d.polygon = array

175 名前:名前は開発中のものです。 mailto:sage [2024/03/23(土) 23:13:23.43 ID:uy0YEbAb.net]
C#で書いてたらだんだん損した気分になってきた…

176 名前:名前は開発中のものです。 mailto:sage [2024/03/23(土) 23:57:14.52 ID:J5ee5UXV.net]
>>171
そこの説明に書いてある通りで結果が複数になる場合があるから
>because inflating/deflating may result in multiple discrete polygons.
安易な対応方法としては厳密に扱う必要がなければ最初の要素だけ使えば良い
ollisionPolygon2d.polygon = array[0]

>>166
自分の認識ではこんな感じ
PackedVector2Array:点の集合体=ポリゴン
Array[PackedVector2Array]:複数ポリゴン
Polygon2D:ポリゴンを表示に使う
ColiisionPolygon2D:ポリゴンを接触判定に使う
Geometry2D:ポリゴンの加工、評価の為の便利関数群

177 名前:名前は開発中のものです。 mailto:sage [2024/03/24(日) 06:18:11.73 ID:NBGeRgaU.net]
>>172
前に色々調べたときgodotでC#つかうとC#部分は速いけど本体APIとのやりとり部分でオーバーヘッドが生じやすく
トータルでみると結局全部GDスクリプトで書くほうが速いみたいな話を読んだ記憶

178 名前:軌道予測 [2024/03/24(日) 06:25:14.14 ID:o0STPUVA.net]
>>172
厳密すぎて疲れるっていうかね、、、

>>173
geometry2dは位置を作るだけですね、理解
ありがとう



179 名前:軌道予測 [2024/03/24(日) 10:42:59.23 ID:o0STPUVA.net]
なんやcopilot普通に使えるやん
マイクロソフトだからなんか微妙なイメージ持ってたわ

180 名前:名前は開発中のものです。 [2024/03/24(日) 16:34:42.38 ID:30RJWthY.net]
使えるは使えるけど、全体の設計とか関数の仕様理解してないと出鱈目なもの作っちゃうな
何でもよしなに作ってもらえるものじゃない

181 名前:軌道予測 [2024/03/24(日) 17:12:56.64 ID:o0STPUVA.net]
まあ質問の仕方っすね

182 名前:軌道予測 [2024/03/24(日) 19:25:47.06 ID:o0STPUVA.net]
line2dで描いた線をリジッドボディ化する方法ってありますか?
コリジョンをつける件は解決したのですが、ノードの構成をどうすればいいかなと

↓ライン2dをリジッドボディにするには以下のノード構成にする必要があります
ノード1
■rigidbody2d
├line2d
└collisionPolygon2

描く用のline2dノードは別にあって、そこにスクリプトをつけます。
描き終わった時点で物理をつけて、落下させるという処理をしたいです。
ノード2
■line2d_drawing(描画処理を行うノード)

ノード2で描画を行ってから、別シーンにしたノード1に描かれたラインとコリジョンの情報を渡すような流れでしょうか

簡単なプログラムをかけても、こういう、流れ?フローの設計がかなり苦手(*´ω`*)

183 名前:軌道予測 [2024/03/24(日) 19:26:54.19 ID:o0STPUVA.net]
訂正:ノード2で描画を行ってから、別シーンにしたノード1をadd_childし、描かれたラインとコリジョンの情報を渡すような流れでしょうか

184 名前:名前は開発中のものです。 mailto:sage [2024/03/24(日) 23:02:04.63 ID:zekcFUEh.net]
ノード1にLine2Dがあるのに描く用のLine2Dが別にあると言う点が理解できない
Line2Dは線を描く為の物なので同じ内容なら2回も描く必要がない
Line2Dが保持している点データを使いまわしたいのならば
点データ管理用の変数を作ってそれをLine2Dやコリジョン作成に利用すると良い

ノードの構成自体は自分だとこうなる
違うのは描画にLine2DではなくPolygon2Dを使う点
CollisionPolygon2Dに接触判定用のポリゴンデータが渡せるなら
Polygon2Dに全く同じデータを渡して表示する事ができる

シーン1:ゲームを管理する本体
■Node2D※Node2Dである必要は特にないゲームを管理する為のスクリプトをアタッチする

シーン2:インスタンス化して使用する
■RigidBody2D:プレイヤーが描き込んだ物体
├Polygon2D:物体の描画に使う
└CollisionPolygon2D:物体の接触判定に使う

185 名前:軌道予測 [2024/03/25(月) 07:32:49.38 ID:SFtNN9tG.net]
>>181
別にしなくていいんですね
line2dで描いたものの頂点をgeometry2dのoffset_polylineで取得して、その頂点をpolygon2dで再描画すりゃいいんですね
ありがとう

186 名前:軌道予測 [2024/03/25(月) 08:27:58.80 ID:SFtNN9tG.net]
polygon2dってコリジョンつけるクラスだと思ってたナリ(*´ω`*)

187 名前:軌道予測 [2024/03/25(月) 14:16:15.68 ID:SFtNN9tG.net]
1つのファイルに何行くらいコード書きます?
文字数増えると訳わからんくなるけど、対策とかないのかな
自分で1日前書いたコードが若わかめになる

188 名前:軌道予測 [2024/03/25(月) 14:38:30.56 ID:SFtNN9tG.net]
godotって変数のアウトライナーってないのかな?



189 名前:軌道予測 [2024/03/25(月) 18:03:15.07 ID:SFtNN9tG.net]
ど忘れしたんだけども、インスタンス化したシーンから、そのシーンの変数にアクセスできないのって普通なんだっけ?
オートロードかグローバル変数にでもしない限りは。

190 名前:名前は開発中のものです。 mailto:sage [2024/03/25(月) 22:34:21.53 ID:qPdwNxZG.net]
「インスタンス化したシーンから、そのシーンの変数にアクセスできない」のは普通ではない
指示代名詞は誤解の元だからできるだけ使用は避けるべきだと思う
「その」が親のシーンを指しているのならば子インスタンスからはownerプロパティで参照できる

191 名前:軌道予測 [2024/03/26(火) 06:21:35.33 ID:UiMW4uHO.net]
>>187
通常はインスタンス化するだけでグローバル化もなしに、アクセス出来るものですか?
試したらできましたが、できないパターンもあり、違いがよくわからないところです

192 名前:名前は開発中のものです。 mailto:sage [2024/03/26(火) 09:55:23.93 ID:RAozxNLR.net]
せめてそのできないパターンのソースを示せよ

193 名前:軌道予測 [2024/03/26(火) 11:36:39.08 ID:UiMW4uHO.net]
どうも
以下のコードなのですが、polygonプロパティにアクセスするとinvalied get indexエラーになるのです
しかし、このシーンをオートロードに指定していることが原因だったようです
それを今から調べます
https://i.imgur.com/F37AACg.jpg

extends RigidBody2D
var polygon2d_node
var collisionPolygon_node
var polygonArray:PackedVector2Array = [
Vector2(0,0),
Vector2(200,0),
Vector2(200,100)
]

func _ready() -> void:
polygon2d_node = $"Polygon2D"
collisionPolygon_node = $"CollisionPolygon2D"
polygon2d_node.polygon

194 名前:軌道予測 [2024/03/26(火) 12:42:11.47 ID:UiMW4uHO.net]
あーそうか シングルトン的な観点で駄目なのかこれは

195 名前:名前は開発中のものです。 mailto:sage [2024/03/26(火) 16:26:55.68 ID:KPzoI6q7.net]
描画するノードをオートロードに配置する設計に問題はあると思うが
そのコードはエラー無く動いたのでオートロードだからエラーになる訳ではないな

それはそれとして子ノードを参照する変数は宣言と初期化を纏めると
総行数が減って、_ready()以外でも自動補完も効くようになってお得

@onready var polygon2d_node := $Polygon2D
@onready var collisionPolygon_node := $CollisionPolygon2D

196 名前:軌道予測 [2024/03/26(火) 16:34:45.75 ID:UiMW4uHO.net]
ありがとう
原因は良くわからないけど、オートロードはなるべく使わずに作っていきます

197 名前:軌道予測 [2024/03/27(水) 06:23:02.67 ID:E2lXw+Px.net]
別シーンのready内で下位ノードを取得している場合、
呼び出す側のシーンにアタッチされた時点で、別シーンのreadyが実行されるから、アタッチされる前に下位ノードを取得しようとするとnullになるんすね(*´ω`*)

198 名前:軌道予測 [2024/03/27(水) 06:41:08.05 ID:E2lXw+Px.net]
このスクリプトで別シーンのpolygon2d_nodeを取りたいのですが、add_childするとnullになりますね
対策としてpolygon2d_nodeをonreadyにしてみたのですが、それでもnullですね
この辺理解してませんが、onreadyを使うと同期出来るわけじゃないんですかね
var ins = rididDrawLine_scene.instantiate()
#root_node.add_child(ins)
print(ins.polygon2d_node)

@onready var polygon2d_node = get_node("Polygon2D")



199 名前:名前は開発中のものです。 mailto:sage [2024/03/27(水) 07:46:56.03 ID:asE13Xlz.net]
@onreadyはシーンにぶら下がっているノードの参照を安全に得るために使う
@onready指定された変数に格納されるノードの初期化が完了するまで_readyの実行が待機される

>>195のコードはイメージしてる事は判らなくもないが
print(ins.polygon2d_node)ではinsノードの配下にあるpolygon2d_nodeへのアクセスを試みる事になる
子シーンのインスタンス側で設定されていなければエラーとなる
なので書き直すとこうなる

# シーンをインスタンス化する
var ins = rididDrawLine_scene.instantiate()
# インスタンス化したシーンのノードにアクセスする
var polygon2d_node = ins.get_node("Polygon2D")
print(polygon2d_node)

# インスタンス化したシーンを子ノードとして"root_node"に追加する
#root_node.add_child(ins)

add_childでも悶着ありそうだが眠いので説明は割愛する
root_nodeとはどこを指すのか
rootならばcall_defferdを使うと良いがrootである必要はあるのか

200 名前:名前は開発中のものです。 mailto:sage [2024/03/27(水) 07:48:17.73 ID:AFLeB0Kj.net]
Mirrorってなんぞ

201 名前:名前は開発中のものです。 mailto:sage [2024/03/27(水) 07:56:43.05 ID:asE13Xlz.net]
GodotEngineにラッパーライブラリ被せて簡単に扱えるようにしましたって感じかね?
何かあったら一大事になるから覚える価値あるかは疑問
GodotEngineで十分足りてると思う

202 名前:名前は開発中のものです。 mailto:sage [2024/03/27(水) 08:13:45.74 ID:asE13Xlz.net]
とりあえずダウンロードして動かしてみたが4.3の改造版らしいが何が違うのかわからん
ロードマップらしい
https://github.com/orgs/the-mirror-gdp/projects/7
なんもできとらんのでは?スタートアップ投資目的か?

203 名前:名前は開発中のものです。 mailto:sage [2024/03/27(水) 09:17:27.54 ID:s0lKVFz1.net]
最近こういう感じの詐欺まがいのプロジェクト多いな
話題さえかっさらえばあとどうでもなるSNSファースト社会の弊害だな

204 名前:名前は開発中のものです。 mailto:sage [2024/03/27(水) 09:34:32.48 ID:njswSuTs.net]
ノードの自動読み込みとノードのシングルトンって使い分けたほうがいい?
郷に入ってはの精神でなんとなく自動読み込みの方使ってるけど

205 名前:名前は開発中のものです。 [2024/03/27(水) 10:09:54.95 ID:gGONJtOf.net]
>>199
色々追加はされているがまだ始まったばかりやな
最初のコミットは3/15だしそんなもんやろ

206 名前:軌道予測 [2024/03/27(水) 10:16:36.57 ID:E2lXw+Px.net]
>>196
呼び出す側でget_nodeするんですね
シーンに追加されないと子のreadyも実行されないのかなと

207 名前:軌道予測 [2024/03/27(水) 11:36:51.00 ID:E2lXw+Px.net]
godotエディター上で手書きでステージを描いて行く手法とありますかね?
カーソルでポリゴン編集でもいいんですが

208 名前:軌道予測 [2024/03/27(水) 11:54:27.12 ID:E2lXw+Px.net]
https://store.steampowered.com/app/2620500/imomushi/
こんな感じのステージです
タイルマップでも難しそうだし、手書きですよね



209 名前:軌道予測 [2024/03/27(水) 13:43:40.07 ID:E2lXw+Px.net]
普通にポリゴン2dでコチコチ打てるやん
ありがとう!!

210 名前:軌道予測 [2024/03/27(水) 15:26:01.61 ID:E2lXw+Px.net]
あっ、でも打てないことがある 仕組みが良く分からん






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<257KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef