【軽量】godot engine ..
95:名前は開発中のものです。
24/03/04 18:58:36.71 maXrH/rV.net
点追加→描画→クリアじゃなくて最初にクリアしてから点を追加する様にすればいいんじゃない?
それかLine2dは使わずdraw_line()で描くとか
96:名前は開発中のものです。
24/03/04 21:05:07.83 MRQbhd4x.net
ほぼ正解なのに後一考が足りないのが惜しい
clear_points()が何をする命令かを理解し
処理の最後にclear_points()するとどうなるのか考えれば自明だと思うのだがな
97:名前は開発中のものです。
24/03/05 05:33:04.51 NetOoeu2.net
リファレンス見直してみます ありがとう
消し方の部分ですね
98:名前は開発中のものです。
24/03/05 06:35:57.44 NetOoeu2.net
godotってaiインテリセンスとかないのですかね?
visual studioのあれは楽すぎてビビった記憶があります
先の先まで先読みしてくれるので
99:名前は開発中のものです。
24/03/05 12:37:06.97 NetOoeu2.net
>>95
こんなふうに描画関数内の削除ではなく、フレーム内で削除するようにしたらうまくいきました。
どうもコードの流れが分かってないみたいです
URLリンク(imgur.com)
図にしてみましたがこれの違いを言語化出来ないでしょうか?
URLリンク(ideone.com)
extends Node2D
var line2d_node:Line2D
var mouse_pos
func _ready() -> void:
line2d_node = get_node("Line2D")
func _process(delta: float) -> void:
mouse_pos = get_global_mouse_position()
line2d_node.clear_points()
if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT):
draw_to_cursor()
func draw_to_cursor():
for i in range(1):
# 点を打つ処理
var line_point = self.position
line2d_node.add_point(self.position)
line2d_node.add_point(mouse_pos)
print("描画")
100:名前は開発中のものです。
24/03/05 13:32:23.84 LGdF4KOk.net
図表が何の例なのかが判らないのでそれとは違う話をする
GUIアプリはライフサイクルに従って動作する
Godotの良い例が見つからなかったのでUnityのライフサイクルを元に話を進める
URLリンク(docs.unity3d.com)
図中の処理を以下の様に読み替えて欲しい
Awake=_init()
Start=_ready()
FixedUpdate=_physics_process()
OnMouseXXX=_input()
Update=_process()
ここで注視するのは画面描画のタイミングでそれは各種Renderingのステージで行われる
Initialization:初期化
Physics:物理演算
Input events:入力反映
Game logic:ゲーム処理
を経て、それらの処理で作られた描画データを元に描画が行われる
描画後は物理演算から繰り返し
これはUnityの例なのでGodotにおいては実行順が異なる可能性がある
101:名前は開発中のものです。
24/03/05 14:58:24.96 2jT49Fhn.net
そもそもdraw_to_cursor内に描画処理は入ってない
add_pointは後から_draw()で描画される事になる線を構成する点を追加するというだけ
102:名前は開発中のものです。
24/03/05 16:14:33.95 WbtfMd0/.net
>>97
vscode経由でやればできるにはできるけど
gdscriptだと実用レベルのコードはほぼでないよ
103:名前は開発中のものです。
24/03/06 06:26:28.33 0YKHfOtY.net
>>99
返信遅れてごめんなさい
寝不足でずっと寝てました
>>100
あっそうか、マウスクリック時にしか描画されないという点が問題だったんですね
>>101
unity c#より記述量少ないからなくてもいいかもですね
104:名前は開発中のものです。
24/03/06 06:39:24.06 xC/Ga180.net
自分は同じような内容列記するときだけ使ってるかな
APIの使い方が間違ってたり、文法がおかしかったりと普段使いはむしろ邪魔
105:名前は開発中のものです。
24/03/06 06:45:51.37 0YKHfOtY.net
放物線あと2日くらいで完成させる(*´ω`*)
106:名前は開発中のものです。
24/03/06 06:49:31.06 0YKHfOtY.net
インテリコードっていう呼び名でしたっけね
107:名前は開発中のものです。
24/03/06 17:57:53.24 0YKHfOtY.net
is_mouse_button_pressedはありますけど、
マウスにjust pressed系はないんですかな?
108:名前は開発中のものです。
24/03/06 18:12:02.85 0YKHfOtY.net
あっ、action pressのほうでやるんすね ごめんなさい(*´ω`*)
109:名前は開発中のものです。
24/03/06 18:15:22.40 mNCkxtfo.net
そもそもjust pressedはactionにしかない
110:名前は開発中のものです。
24/03/07 14:31:20.08 pWb+fA4v.net
>>105
IntelliCodeはGDScriptに対応してないね
VSCodeでGDScriptを書いても無理だわ
111:名前は開発中のものです。
24/03/07 15:51:23.86 qvtd0tl6.net
今日仕入れた豆知識
ランダムでtrueかfalseの2択を使いたい時
var random : bool = randf() > 0.5
この1行でOK
112:名前は開発中のものです。
24/03/08 10:20:06.16 G13/EPQ6.net
randiの方が早いよ
113:名前は開発中のものです。
24/03/08 15:09:31.48 4aurAYnx.net
速度詰めるなら(randi() & 1) == 1;とか?
114:軌道予測
24/03/08 19:43:07.94 vGL0nvHr.net
軌道予測の者です
考え方として、予測軌道を描きたい場合、軌道予測用のオブジェクトを一度投げないと、ポイントを取得出来ないのではないでしょうか?
物理を使わない場合、方角と力の値があれば、そこから事前に予測出来るのでしょうか?
方法を思いつかなかったので質問させてください
>>109
ですよね(*´ω`*)
115:名前は開発中のものです。
24/03/08 23:32:43.87 Eb0+PHr0.net
>>69
>>88の解決法が判った
予想通り初期設定が足りていなかった
RigidBody2Dのcustom_integratorを有効にする事できっちり同じ挙動になった
衝突まで出来たが反射が出来てないので課題は残る
116:名前は開発中のものです。
24/03/08 23:52:05.37 Eb0+PHr0.net
>>112に補足
速さを求めるなら==は要らない
bool型に代入すると型変換で遅くなるので代入するならint型
var random:int = randi() & 1
しないなら
if randi() & 1:
pass
だけどゲームで使う分には誤差だから判りやすい記述が良いと思う
117:名前は開発中のものです。
24/03/09 00:57:45.63 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:名前は開発中のものです。
24/03/09 01:59:11.51 TY4JoG/O.net
言い回しは運動量dじゃなく速度velocityとした方が良いかな?
119:軌道予測
24/03/09 06:47:06.36 HzeElu7U.net
初速、方向ベクトル、力、時間の4要素がおそらく必要なんですね
運動方程式物理の本買ったんですけど、数学への抵抗感なくなればいいなぁ(*´ω`*)
120:軌道予測
24/03/09 11:31:15.25 HzeElu7U.net
Programmingの理解が遅い人って何が問題なんでしょうか
自分のことですけども
抽象化、というかイメージ化が出来てないのかも
121:名前は開発中のものです。
24/03/09 12:48:53.19 TY4JoG/O.net
理解できないのは理解できるサイズまで対象を分解できていないから
思い描いているイメージを具体化できてない
抽象的かつ大雑把過ぎるので細かい要素に分割する
分割した要素毎に必要な知識を理解する
Peglinを作りたい→軌道予測線を描きたい
線を描くとは→線分を画面に表示する
軌道予測とは→放物運動の開始から終了までの線分を描くための座標を取得する
放物運動とは→等速運動と自由落下する運動
座標の取得とは→放物運動の計算式から得られる
放物運動の計算式とは→(a)物理エンジンから取得するか(b)自前で自前で計算するかの二択
(a)物理エンジンで取得する→RigidBodyを実際に投げた結果から座標を取得する
実際に投げるには→他に影響を与えずに投げた結果を得るには特殊な手法が必要
特殊な手法とは→>>69が提示
(b)自前で計算する→放物運動の計算式を作る
計算式を作る→線分を描くために時間経過毎の座標を取得する→>>116で提示
要素を分解するとこんなもんか?
放物運動の計算は複雑な計算式は不要で時間経過毎に等加速と自由落下を加算するだけ
判らないなら判る所まで分解して考える
122:軌道予測
24/03/09 18:53:53.21 HzeElu7U.net
>>120
1つずつ単体テストみたいなことをやるといいんですかね?
123:名前は開発中のものです。
24/03/10 01:50:55.82 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:軌道予測
24/03/10 09:50:48.90 uoG0dKmX.net
どうも
必要な要素が把握出来てないのかもですね
線はline2dでやってみます
126:軌道予測
24/03/11 14:26:20.28 CzcLH5L4.net
gdscriptでは関数入れ子はサポートされてないんですかね?
127:名前は開発中のものです。
24/03/11 23:30:22.40 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:軌道予測
24/03/12 10:22:31.68 6dOLlAtw.net
myfnctionのプロパティー化しないと駄目ということですかね
129:名前は開発中のものです。
24/03/12 10:43:32.43 Ui38L6jh.net
短いコードなのだから疑問に思ったら自分で試してみれば良いじゃない
var f = func inner_function(x)->String:
return "inner_function called from %s" % [x]
func my_function(name):
print(f.call(name))
公式ドキュメントはこちら
URLリンク(docs.godotengine.org)
130:名前は開発中のものです。
24/03/12 11:23:29.64 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:軌道予測
24/03/12 15:08:54.31 6dOLlAtw.net
ありがとう
今すぐ使うわけじゃないんだけど知識として知りたかったんだ
会話に飢えてるのかも
132:軌道予測
24/03/15 14:19:26.75 z+ILEsEI.net
ペイントソフトの筆のように線を描くのは可能でしょうか?
ペイントソフトってよく見ると点を打ってるんですよね
line2dとそれにコリジョンつけるためのsegment shapeあたりで調べてます
133:軌道予測
24/03/15 14:44:55.65 z+ILEsEI.net
あ、描くのはすんなり行けたナリ(*´ω`*)
134:軌道予測
24/03/15 20:10:53.69 z+ILEsEI.net
URLリンク(docs.godotengine.org)
segment shapeで太さは指定出来ないっぽい
となると頂点を打って、ぐるっと囲む感じでコリジョンを作るって感じなのね
135:名前は開発中のものです。
24/03/15 20:19:43.83 v4U5bWGM.net
カプセルとかの単純形状系でもいけそう
136:軌道予測
24/03/16 03:54:55.34 ECp53ZYt.net
ライン描いてそれをコリジョン化する感じ
unityならアセットでサクッとできるんだけろうけど、godotだとサンプルが少ないナリ
137:軌道予測
24/03/16 09:40:56.08 ECp53ZYt.net
>>133
Q REMASTEREDとか、あれを単純図形でいけるかな?
まあペイントソフトも玉のテクスチャを連続させてるだけだよね
138:軌道予測
24/03/16 12:06:33.95 ECp53ZYt.net
URLリンク(imgur.com)
単純図形をフレームごとにadd_childしてるのじゃが、一定間隔でadd_childしたとしてもつながるほど短い間隔になる保証はないのだけど、何か方法はありますかね?
139:軌道予測
24/03/16 12:16:39.25 ECp53ZYt.net
elapseTime+=delta
if elapseTime >= 0.001:
print("hoge")
たとえばelapseTimeでこんなふうにして実行しても、フレーム以上の描画スピードにはならんわけよね(*´ω`*)
140:名前は開発中のものです。
24/03/16 13:03:45.25 +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得られる
公式ドキュメント
URLリンク(docs.godotengine.org)
141:軌道予測
24/03/16 13:13:32.53 ECp53ZYt.net
多分、描いた線をコリジョン化したい場合は、ジオメトリー系を使うみたいです
今から調べます
142:名前は開発中のものです。
24/03/16 13:42:11.02 33L2QT9a.net
Qは一定間隔で円なの普通に見てわかるな
>>133でカプセルっつってんだからカプセルか間に長方形挟むでもいいと思うけど直線がダメか
143:軌道予測
24/03/16 14:03:51.94 ECp53ZYt.net
1フレームあたり座標をずらしたものを複数個追加する方法でいけるかもね
144:軌道予測
24/03/16 17:55:12.95 ECp53ZYt.net
↑駄目だった
やっぱりカーソル早く動かすと1フレームあたりの描画量が足りなくて、点々になっちまう(*´ω`*)、、、、
ジオメトリあたり試してみるナリが、godotの場合、線を引いてそれにコリジョンをつけるには何の機能がいいの?
145:軌道予測
24/03/18 06:18:37.02 sBH5kPda.net
line2dにコリジョンつけたいんだけど、方法ある?
segmentshapeで太さ出せるだろうか?
146:名前は開発中のものです。
24/03/18 12:34:34.92 /glnBgCG.net
SegmentShape2Dで太さは指定できない
厚みを持たせるなら元ネタ同様に球を並べるか二点を通るポリゴンを自分で作る
二点の中点にRectangleShape2Dを置いて傾けるという方法でも可能
147:名前は開発中のものです。
24/03/18 13:18:28.54 /glnBgCG.net
端の処理を考えたらCaosuleShape2Dの方が綺麗にできる
148:軌道予測
24/03/18 13:26:05.86 sBH5kPda.net
rectangleshape2dだと曲線とか難しそうですね
玉連続の場合、1フレームあたりに複数個追加しないと玉が飛ぶんですが、どういうやり方があるんでしょうか。
149:名前は開発中のものです。
24/03/18 13:30:42.80 /glnBgCG.net
使える情報は前フレームの座標と現フレームの座標
フレーム間の座標は自分で作るしかない
回答は>>138
150:軌道予測
24/03/18 13:40:45.88 sBH5kPda.net
どうも
玉手法はgptに聞いてみます
線形補間もやってみます
151:軌道予測
24/03/18 19:15:29.31 sBH5kPda.net
こういうときはunityでのやり方を調べると参考になるかもですね
godotだとやはり情報が少ないっす
152:軌道予測
24/03/19 14:44:11.82 D3Qdtv84.net
URLリンク(www.youtube.com)
このゲームのラインって玉の連続と上で教えてもらったんですが、どこを見ると玉ということが分かりますか?
玉であってもコリジョンを曖昧にすればいけそうですね
153:名前は開発中のものです。
24/03/19 15:20:17.53 n2087dMP.net
引ける線が無制限のつもりならgd_paintみたいなお絵描き機能実装してopaque_to_polygonsの方がいいかも
154:軌道予測
24/03/19 17:15:47.28 D3Qdtv84.net
無制限とはどういうことですか?
色をポリゴン化する機能は知りませんでした
155:名前は開発中のものです。
24/03/19 17:55:59.32 n2087dMP.net
ドラッグで線を描くとして、線を引いてる間に毎フレーム線や円を追加してるとそのうちオブジェクト数がえらい事になる
156:名前は開発中のものです。
24/03/19 18:44:46.90 hE1w1zmY.net
えらい数になる前に点を間引いたり直線近似するんよね
157:軌道予測
24/03/20 09:55:11.93 o2i+3Cka.net
球が増えすぎると重くなるとしたら、ラインのながさを制限するなりしないとだめってことですよね
それもゲーム性にすりゃいいかもです
158:軌道予測
24/03/20 09:55:52.73 o2i+3Cka.net
点の連続で線を描くというのは一般的な方法なんでしょうか。
点が飛ぶのは、lerpでどうにか補完できないか考えてます
159:軌道予測
24/03/21 11:09:56.75 IgSPnTWH.net
godotで3dゲーム作るのはあり?
お遊びだけどさ
160:軌道予測
24/03/21 13:13:49.23 IgSPnTWH.net
やっぱホワイトボックスレベルでも3d作るのは大変だと感じるナリ
161:名前は開発中のものです。
24/03/21 16:40:50.08 XmwxGLbE.net
Godotで3Dゲームを作るの
162:が無しだったら>>1の作例は無いだろう 3Dの方が要求知識が増えるので簡単とは言わないが苦手意識が強すぎる様に思う 3Dでもカメラを固定して一軸を全く使わなければ2Dとほぼ同じ扱いになる 3Dを使ったエフェクトが使いやすくなるのでメリットもある
163:軌道予測
24/03/21 18:06:43.28 IgSPnTWH.net
まあね
完成させられないで失敗しかしてないから
164:名前は開発中のものです。
24/03/21 23:24:33.92 XmwxGLbE.net
少なくとも自分で調べたり聞いた結果
線の引き方は覚えたし内容は理解しきれなくとも線形補完という手法も知った
以前と比べれば何かした分は成長している
how-toを聞いただけで理解して使いこなせたら秀才
使いこなせないのは知識も経験も足りないからで功を焦りすぎ
165:名前は開発中のものです。
24/03/21 23:30:23.01 XmwxGLbE.net
点と点の間の線を引く際に不足する点を補完する方法が線形補完
線を引く上では一般的と言えるがゲームでの利用においては制限があるのは指摘されている通り
制限が問題になるなら対策を打つなり別方法を使用する事になる
166:軌道予測
24/03/22 14:16:19.70 jsxrvFIK.net
コツコツやってきます
興味が長続きしないので解決しなくても課題は定期的に変えますが、、、それが問題
167:軌道予測
24/03/22 20:17:17.38 jsxrvFIK.net
godotのコードサンプルってどこで手に入りますか?
kids can codeはたまに見ますが
168:名前は開発中のものです。
24/03/22 22:12:21.80 YF/BaExa.net
公式のデモプロジェクト
URLリンク(github.com)
細かく解説されている訳ではないので読み解くのは大変だが物量はある
GodotEngineのバージョンで差異があるのでコードを参考にするなら対象バージョンのブランチを選ぶ
全てではないがブラウザで動かせるので手っ取り早くイメージを掴める
URLリンク(godotengine.github.io)
169:軌道予測
24/03/23 10:59:33.56 apw+jUEF.net
geometry2dってポリゴン2dみたいにポリゴンを描くクラスと考えていいんでしょうか
まだ使い方が分かってない
ただ、シングルトンではあるみたいです
>>165
ありがとう
170:軌道予測
24/03/23 11:40:20.63 apw+jUEF.net
geometry2d自体は頂点を生成するだけで、ポリゴンはcollisionpolygon使うみたいですね
171:名前は開発中のものです。
24/03/23 13:42:14.97 uy0YEbAb.net
3dのローポリ作品多いけど、リアルにしたらエンジン的にキツいんかな?
172:名前は開発中のものです。
24/03/23 14:40:47.81 OOg18fNS.net
ハイポリモデルを使うのがキツイのはエンジンじゃなくてマンパワーでしょ
173:軌道予測
24/03/23 18:16:55.69 apw+jUEF.net
最新のgptは有料じゃないと使えないのかな
godot4についてはデータベースがないみたい
copilot使ってみるけど、他におすすめある?
174:軌道予測
24/03/23 19:49:59.54 apw+jUEF.net
geometry2dのoffset_polylineについて質問なんですけど、この関数にポリラインの配列を渡すとなぜか2次元配列で帰って来るのですが、なぜでしょうか
URLリンク(docs.godotengine.org)
返り値をcollisionPolygon2dに代入して使いたいのですが
collisionPolygon2d.polygon = array
175:名前は開発中のものです。
24/03/23 23:13:23.43 uy0YEbAb.net
C#で書いてたらだんだん損した気分になってきた…
176:名前は開発中のものです。
24/03/23 23:57:14.52 J5ee5UXV.net
>>171
そこの説明に書いてある通りで結果が複数になる場合があるから
>because inflating/deflating may result in multiple discrete polygons.
安易な対応方法としては厳密に扱う必要がなければ最初の要素だけ使えば良い
ollisionPolygon2d.polygon = array[0]
>>166
自分の認識ではこんな感じ
PackedVector2Array:点の集合体=ポリゴン
Array[PackedVector2Array]:複数ポリゴン
Polygon2D:ポリゴンを表示に使う
ColiisionPolygon2D:ポリゴンを接触判定に使う
Geometry2D:ポリゴンの加工、評価の為の便利関数群
177:名前は開発中のものです。
24/03/24 06:18:11.73 NBGeRgaU.net
>>172
前に色々調べたときgodotでC#つかうとC#部分は速いけど本体APIとのやりとり部分でオーバーヘッドが生じやすく
トータルでみると結局全部GDスクリプトで書くほうが速いみたいな話を読んだ記憶
178:軌道予測
24/03/24 06:25:14.14 o0STPUVA.net
>>172
厳密すぎて疲れるっていうかね、、、
>>173
geometry2dは位置を作るだけですね、理解
ありがとう
179:軌道予測
24/03/24 10:42:59.23 o0STPUVA.net
なんやcopilot普通に使えるやん
マイクロソフトだからなんか微妙なイメージ持ってたわ
180:名前は開発中のものです。
24/03/24 16:34:42.38 30RJWthY.net
使えるは使えるけど、全体の設計とか関数の仕様理解してないと出鱈目なもの作っちゃうな
何でもよしなに作ってもらえるものじゃない
181:軌道予測
24/03/24 17:12:56.64 o0STPUVA.net
まあ質問の仕方っすね
182:軌道予測
24/03/24 19:25:47.06 o0STPUVA.net
line2dで描いた線をリジッドボディ化する方法ってありますか?
コリジョンをつける件は解決したのですが、ノードの構成をどうすればいいかなと
↓ライン2dをリジッドボディにするには以下のノード構成にする必要があります
ノード1
■rigidbody2d
├line2d
└collisionPolygon2
描く用のline2dノードは別にあって、そこにスクリプトをつけます。
描き終わった時点で物理をつけて、落下させるという処理をしたいです。
ノード2
■line2d_drawing(描画処理を行うノード)
ノード2で描画を行ってから、別シーンにしたノード1に描かれたラインとコリジョンの情報を渡すような流れでしょうか
簡単なプログラムをかけても、こういう、流れ?フローの設計がかなり苦手(*´ω`*)
183:軌道予測
24/03/24 19:26:54.19 o0STPUVA.net
訂正:ノード2で描画を行ってから、別シーンにしたノード1をadd_childし、描かれたラインとコリジョンの情報を渡すような流れでしょうか
184:名前は開発中のものです。
24/03/24 23:02:04.63 zekcFUEh.net
ノード1にLine2Dがあるのに描く用のLine2Dが別にあると言う点が理解できない
Line2Dは線を描く為の物なので同じ内容なら2回も描く必要がない
Line2Dが保持している点データを使いまわしたいのならば
点データ管理用の変数を作ってそれをLine2Dやコリジョン作成に利用すると良い
ノードの構成自体は自分だとこうなる
違うのは描画にLine2DではなくPolygon2Dを使う点
CollisionPolygon2Dに接触判定用のポリゴンデータが渡せるなら
Polygon2Dに全く同じデータを渡して表示する事ができる
シーン1:ゲームを管理する本体
■Node2D※Node2Dである必要は特にないゲームを管理する為のスクリプトをアタッチする
シーン2:インスタンス化して使用する
■RigidBody2D:プレイヤーが描き込んだ物体
├Polygon2D:物体の描画に使う
└CollisionPolygon2D:物体の接触判定に使う
185:軌道予測
24/03/25 07:32:49.38 SFtNN9tG.net
>>181
別にしなくていいんですね
line2dで描いたものの頂点をgeometry2dのoffset_polylineで取得して、その頂点をpolygon2dで再描画すりゃいいんですね
ありがとう
186:軌道予測
24/03/25 08:27:58.80 SFtNN9tG.net
polygon2dってコリジョンつけるクラスだと思ってたナリ(*´ω`*)
187:軌道予測
24/03/25 14:16:15.68 SFtNN9tG.net
1つのファイルに何行くらいコード書きます?
文字数増えると訳わからんくなるけど、対策とかないのかな
自分で1日前書いたコードが若わかめになる
188:軌道予測
24/03/25 14:38:30.56 SFtNN9tG.net
godotって変数のアウトライナーってないのかな?
189:軌道予測
24/03/25 18:03:15.07 SFtNN9tG.net
ど忘れしたんだけども、インスタンス化したシーンから、そのシーンの変数にアクセスできないのって普通なんだっけ?
オートロードかグローバル変数にでもしない限りは。
190:名前は開発中のものです。
24/03/25 22:34:21.53 qPdwNxZG.net
「インスタンス化したシーンから、そのシーンの変数にアクセスできない」のは普通ではない
指示代名詞は誤解の元だからできるだけ使用は避けるべきだと思う
「その」が親のシーンを指しているのならば子インスタンスからはownerプロパティで参照できる
191:軌道予測
24/03/26 06:21:35.33 UiMW4uHO.net
>>187
通常はインスタンス化するだけでグローバル化もなしに、アクセス出来るものですか?
試したらできましたが、できないパターンもあり、違いがよくわからないところです
192:名前は開発中のものです。
24/03/26 09:55:23.93 RAozxNLR.net
せめてそのできないパターンのソースを示せよ
193:軌道予測
24/03/26 11:36:39.08 UiMW4uHO.net
どうも
以下のコードなのですが、polygonプロパティにアクセスするとinvalied get indexエラーになるのです
しかし、このシーンをオートロードに指定していることが原因だったようです
それを今から調べます
URLリンク(i.imgur.com)
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:軌道予測
24/03/26 12:42:11.47 UiMW4uHO.net
あーそうか シングルトン的な観点で駄目なのかこれは
195:名前は開発中のものです。
24/03/26 16:26:55.68 KPzoI6q7.net
描画するノードをオートロードに配置する設計に問題はあると思うが
そのコードはエラー無く動いたのでオートロードだからエラーになる訳ではないな
それはそれとして子ノードを参照する変数は宣言と初期化を纏めると
総行数が減って、_ready()以外でも自動補完も効くようになってお得
@onready var polygon2d_node := $Polygon2D
@onready var collisionPolygon_node := $CollisionPolygon2D
196:軌道予測
24/03/26 16:34:45.75 UiMW4uHO.net
ありがとう
原因は良くわからないけど、オートロードはなるべく使わずに作っていきます
197:軌道予測
24/03/27 06:23:02.67 E2lXw+Px.net
別シーンのready内で下位ノードを取得している場合、
呼び出す側のシーンにアタッチされた時点で、別シーンのreadyが実行されるから、アタッチされる前に下位ノードを取得しようとするとnullになるんすね(*´ω`*)
198:軌道予測
24/03/27 06:41:08.05 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:名前は開発中のものです。
24/03/27 07:46:56.03 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:名前は開発中のものです。
24/03/27 07:48:17.73 AFLeB0Kj.net
Mirrorってなんぞ
201:名前は開発中のものです。
24/03/27 07:56:43.05 asE13Xlz.net
GodotEngineにラッパーライブラリ被せて簡単に扱えるようにしましたって感じかね?
何かあったら一大事になるから覚える価値あるかは疑問
GodotEngineで十分足りてると思う
202:名前は開発中のものです。
24/03/27 08:13:45.74 asE13Xlz.net
とりあえずダウンロードして動かしてみたが4.3の改造版らしいが何が違うのかわからん
ロードマップらしい
URLリンク(github.com)
なんもできとらんのでは?スタートアップ投資目的か?
203:名前は開発中のものです。
24/03/27 09:17:27.54 s0lKVFz1.net
最近こういう感じの詐欺まがいのプロジェクト多いな
話題さえかっさらえばあとどうでもなるSNSファースト社会の弊害だな
204:名前は開発中のものです。
24/03/27 09:34:32.48 njswSuTs.net
ノードの自動読み込みとノードのシングルトンって使い分けたほうがいい?
郷に入ってはの精神でなんとなく自動読み込みの方使ってるけど
205:名前は開発中のものです。
24/03/27 10:09:54.95 gGONJtOf.net
>>199
色々追加はされているがまだ始まったばかりやな
最初のコミットは3/15だしそんなもんやろ
206:軌道予測
24/03/27 10:16:36.57 E2lXw+Px.net
>>196
呼び出す側でget_nodeするんですね
シーンに追加されないと子のreadyも実行されないのかなと
207:軌道予測
24/03/27 11:36:51.00 E2lXw+Px.net
godotエディター上で手書きでステージを描いて行く手法とありますかね?
カーソルでポリゴン編集でもいいんですが
208:軌道予測
24/03/27 11:54:27.12 E2lXw+Px.net
URLリンク(store.steampowered.com)
こんな感じのステージです
タイルマップでも難しそうだし、手書きですよね
209:軌道予測
24/03/27 13:43:40.07 E2lXw+Px.net
普通にポリゴン2dでコチコチ打てるやん
ありがとう!!
210:軌道予測
24/03/27 15:26:01.61 E2lXw+Px.net
あっ、でも打てないことがある 仕組みが良く分からん
211:軌道予測
24/03/27 17:03:39.52 E2lXw+Px.net
上のバーに編集モードあったナリありがとう
212:軌道予測
24/03/29 08:00:09.73 YYuuvBhg.net
2dステージ作るのも大変ナリね
213:名前は開発中のものです。
24/03/29 12:26:10.39 4gUGlpzt.net
>>209
専スレ立てたら?
ここお前のレスで埋め尽くされてるじゃん
214:軌道予測
24/03/29 12:44:49.14 YYuuvBhg.net
いいんじゃない 書き込まないと落ちるしもともと人が少ないスレ
215:名前は開発中のものです。
24/03/29 13:04:54.90 twd2rh/A.net
なにひとつよくないが、そんなんだから雑談スレ追い出されんだよ
質問ですらない独り言とかTwitterで鍵かけてつぶやいてろ
216:名前は開発中のものです。
24/03/29 13:12:07.70 sRPqCb6v.net
>>211
いくら過疎スレでも占有はよくないよ
自分で専スレ立てれない?
そっちを日記として使って、どうしても解決できない問題があるときだけここで聞けばいいよ
217:名前は開発中のものです。
24/03/29 13:19:13.92 YYuuvBhg.net
じゃあ君等が落ちないようにしてね
218:名前は開発中のものです。
24/03/29 13:21:25.50 18de9J88.net
dat落ちの条件理解してなさそうだし、適当な事言うのは辞めた方がいい
何か勘違いしてないか?
219:名前は開発中のものです。
24/03/29 13:38:45.51 sRPqCb6v.net
>>214
立てたよ
こっち自由に使ってくれ
俺も使う予定
ゲーム制作の日記、備忘録、メモなど好きに呟くスレ
スレリンク(gamedev板)
220:名前は開発中のものです。
24/03/29 14:40:51.42 YYuuvBhg.net
荒れるから素直に謝っておくか
不快にさせてすみません
221:名前は開発中のものです。
24/03/29 15:42:09.03 s+Iwx5M0.net
>>210-218
個人粘着でスレの進行妨害するのやめてくれないか?
無駄レスも多いが制作に絡んだ話はしている
自治厨始める奴の方が邪魔
無駄レスが気に入らないなら会話になるGodotの話題を出してくれ
222:名前は開発中のものです。
24/03/29 15:46:26.16 2tYAETUL.net
godot4.0になった辺りで触らなくなったんだがもう4.3まで伸びてんのな
4.1~4.3でなんか目玉機能追加された?
223:名前は開発中のものです。
24/03/29 16:43:00.72 18de9J88.net
そもそも過疎板にはDat落ち判定はないんだが(nKB未満が即死する即死判定はある)
頓珍漢な言い訳はやめなさいと言っただけだぞ
224:名前は開発中のものです。
24/03/29 17:26:29.20 nuxfBRdB.net
圧縮で落ちるのが最終更新なら2018年とかのが残ってるから確かに当分は大丈夫そうだな
225:名前は開発中のものです。
24/03/29 17:47:38.73 imN+3EnT.net
3Dファイルはgltf一択?
Blender連携はテクスチャ周りが上手くいかん
226:名前は開発中のものです。
24/03/29 17:56:09.05 YYuuvBhg.net
>>222
fbxはライセンスの関係で使えないんじゃなかった?
今どうなってるか分からん 3dやってないし
227:名前は開発中のものです。
24/03/29 18:36:00.41 eapD4MOf.net
数日放置してたら案の定もめてて草
正直異様でスレ見る気も失せる状態だったし
>>218もいちいち絡んでちゃ自治厨と大差ない
しょーもな
228:名前は開発中のものです。
24/03/29 21:52:57.37 PtR313Sj.net
オマエモナー
229:名前は開発中のものです。
24/03/29 23:38:18.95 imN+3EnT.net
日本語でgodot関連調べてると大抵同じ人の記事にたどり着く…何者なんだ…
230:名前は開発中のものです。
24/03/30 15:36:35.50 8Or9Js4W.net
>>224
これ
変な拘りで自治が自治が言ってる時点で自治してるようなもんだし
5chなんだから気に入らなきゃ別スレでも立てて好きにやりゃ良いのに
231:名前は開発中のものです。
24/03/30 23:48:04.78 uJH0yGQv.net
オマエモナー
232:名前は開発中のものです。
24/04/01 06:44:36.40 bnl1SBKq.net
マリオみたいな2dアクションってタイルマップ使わずに作るのはあり?
タイルマップないと調整が難しいんじゃないかな
ジャンプ力3とした場合、谷をタイル3つぶんにすればギリギリ届く、といった調整が簡単
233:名前は開発中のものです。
24/04/01 08:02:59.00 PL23FYq5.net
>>229
最近のゲームではNoitaが地形全部ピクセルかなと思います
今はCPUやRAMが潤沢なので十分ありなのでは
234:名前は開発中のものです。
24/04/01 12:52:37.52 bnl1SBKq.net
jumpkingみたいな感じのを作りたい
あれはタイルマップ感はないけど、タイルマップではないにしてもグリッドをベースにしたほうが楽そう
235:名前は開発中のものです。
24/04/01 13:15:59.82 vOJskMGJ.net
godotはグリッドにスナップできるし
jumpking程度ならコリジョン付けて配置してくだけで行けると思うよ
236:名前は開発中のものです。
24/04/01 17:11:07.39 bnl1SBKq.net
サイトでもグリッドデザインとかあるしね
237:名前は開発中のものです。
24/04/01 19:23:56.08 bnl1SBKq.net
URLリンク(youtu.be)
この画面中央にある浮島みたいな複雑な形状もタイルマップなのかな?
238:名前は開発中のものです。
24/04/01 19:35:50.50 Qv7VTYs7.net
JKは地形の最小単位自体は見える気がするし単に細かめのタイルマップで再現できるのはできるんじゃね
modの作り方見た感じ判定はRGB画像をタイルマップみたく扱ってて見た目は一枚絵被せてるらしい
239:名前は開発中のものです。
24/04/01 20:13:46.87 bnl1SBKq.net
タイルマップ研究してみる
機能じゃなくてデザインから作る試みをしてるから
被せるというのは、つまりタイルマップでマスキング(くり抜き)してる感じかな?
240:名前は開発中のものです。
24/04/01 21:28:39.74 Qv7VTYs7.net
RGB画像は1画面辺り60×45とかの荒いやつだから違う
ゲームデザイン(判定、地形)だけタイルマップ式でそれに合わせた画像を別で用意してるってこと
これ貼るのが早いか
URLリンク(jumpkingplus.github.io)
URLリンク(jumpkingplus.github.io)
241:名前は開発中のものです。
24/04/02 06:38:50.57 gq8N0/8x.net
>>237
ん?一枚絵を重ねる感じ?
242:名前は開発中のものです。
24/04/03 19:26:17.38 BKl8fFHu.net
慣れてないとタイルマップでステージ作るの難しいね
243:名前は開発中のものです。
24/04/04 18:23:04.76 Yk95TemJ.net
タイルマップエディタの位置って変更出来る?
下のスペースだと作業しづらくてしゃあない
244:名前は開発中のものです。
24/04/05 02:45:26.77 Pqxpfu1i.net
CollisionLayerやVisibilityLayerのレイヤー名適当に付けてきたから並び替えしたいけど面倒だなー
かといってスクリプトで管理するのも面倒
245:名前は開発中のものです。
24/04/05 06:47:12.42 VPXaZ05P.net
タイルマップのアルファ部分を境界線として自動的にコリジョンつける機能あったっけ?
246:名前は開発中のものです。
24/04/07 10:10:16.82 XQBKHWlL.net
1つのゲーム何ヶ月くらいかける?
そんな大作は作れないから数週間程度にしとくといいのかなと思うが
247:名前は開発中のものです。
24/04/07 12:40:54.04 B7MxZFEN.net
初めて作るなら二週間くらいで作れそうなのにした方が早めに世に出せていいと思う
製作期間なんてどうせ伸びるし
248:名前は開発中のものです。
24/04/07 14:24:50.23 XQBKHWlL.net
ありがとう
想定の2倍以上はかかる 確かに
249:名前は開発中のものです。
24/04/07 20:10:06.18 XQBKHWlL.net
2dアクションのステージ作るときにタイルセットじゃなくて、ポリゴンノードを1枚のタイルとして大量に並べていったらパフォーマンスにかなり影響出るのかな?
数千とかそういうレベルになったら
250:名前は開発中のものです。
24/04/08 00:34:30.27 BT1LWWM9.net
余裕で出るだろうねぇ
Godotがすごすぎエンジンで問題なかったら逆にビックリするけど
251:名前は開発中のものです。
24/04/08 05:26:25.44 EcmamLs3.net
どうも
出るか、、、
ポリゴンノードの羅列のほうが柔軟に形状変えられていいかなと思ったけど、タイルマップでやる
タイルマップは形状にどうしても制限が出るから
252:名前は開発中のものです。
24/04/08 13:22:19.11 BT1LWWM9.net
性能テストだと思って実際に作って負荷検証した方がプロっぽいけどな
Zennとかで投稿して知見共有してくれてもいいのよ? 宣伝にもなるし
あ、契約書からむような案件だったらダメだけど
253:名前は開発中のものです。
24/04/08 14:15:01.29 EcmamLs3.net
ありがとう
zennってたまに見るけどブログとしていいね
fc2から乗り換えよう
254:名前は開発中のものです。
24/04/09 11:56:09.63 oLx3m2KZ.net
URLリンク(dev.to)
オートタイルはterrain使ってやる感じ?
今学習中
スクリプト無しで出来るならいいけど
この解説生地を書こう
255:名前は開発中のものです。
24/04/09 14:36:54.29 oLx3m2KZ.net
URLリンク(imgur.com)
オートタイルを作りたいけど、仕組みがよく理解できない
terrainをペイントすることでそれっぽくなるけど、どこをどうペイントするといいのかガ分からない
256:名前は開発中のものです。
24/04/13 06:35:26.13 DtpmdlV4.net
URLリンク(www.youtube.com)
オートタイルの動画あったけど仕組みが分からん
塗った場所によって、どのようにつながるか決まるらしいけど、どなたか教えて
257:名前は開発中のものです。
24/04/13 12:16:44.81 4XyoFcVO.net
いやこれで分からないんじゃ説明のしようがねえじゃん
258:名前は開発中のものです。
24/04/13 14:29:45.52 2dO4J81U.net
俺の立てたスレに来たら懇切丁寧に教えてもよかったけど
この顔文字くん来ないんだよな
人が多いとこに居たいんだろうけど
259:名前は開発中のものです。
24/04/13 15:12:12.60 DtpmdlV4.net
立てたっけ?
260:名前は開発中のものです。
24/04/13 15:15:11.02 2dO4J81U.net
>>256
ここな>>216
261:名前は開発中のものです。
24/04/13 15:27:51.76 DtpmdlV4.net
人のこと池沼とか書いてるやついるからええわ
262:名前は開発中のものです。
24/04/13 22:30:37.04 PLTsef0l.net
自覚持てよ
263:名前は開発中のものです。
24/04/14 04:27:19.96 xkIt8wPU.net
そういうのいらないから
264:名前は開発中のものです。
24/04/14 14:53:38.25 pt7t7Gdb.net
オマエモナー
265:名前は開発中のものです。
24/04/17 11:03:55.56 c7cp2PUr.net
godot4で方向取る関数ってなんですか?
input.get_axisだと引数が2つ必要になっていましたね
以前はinput.get_axis("horizontal")←これで横方向がトレていたのですが、
266:名前は開発中のものです。
24/04/17 11:23:02.69 S9SgvMuX.net
以前とはいつの事か?またはどのバージョンの事か?
質問する前に自分の記憶が正しいかの確認をする
URLリンク(docs.godotengine.org)
初登場時からget_axisの引数は2つ
get_axisの機能を方向取る関数と認識しているのならば
引数の形式が変わっていても新しい引数の形式での使い方を理解するしかない
267:名前は開発中のものです。
24/04/17 11:59:17.28 c7cp2PUr.net
>>263
そうでしたか
なにかの記憶違いだったかもしれないです
var direction
if Input.is_action_just_pressed("ui_right"):
direction = "right"
if Input.is_action_just_pressed("ui_left"):
direction = "left"
if Input.is_action_just_pressed("ui_up"):
direction = "up"
if Input.is_action_just_pressed("ui_down"):
direction = "down"
_move(direction)
文字列での分岐にすることにしました
268:名前は開発中のものです。
24/04/17 12:28:13.73 S9SgvMuX.net
なんとなくの予想だがUnityのInputSystem辺りと記憶が混ざってるのかもね
理解できず動かない簡潔なコードよりも理解できて正しく動く冗長なコードが勝るが
get_axisとget_vectorは有用なので使い方は理解できた方が良い
余裕があれば挑戦してみて欲しい
公式のサンプルでは大体こんな感じで使われている
# 左右をfloatで取得
var movement = get_axis("ui_left", "ui_right")
# 上下左右をVector2で取得
var direction = get_vector("ui_left", "ui_right", "ui_up", "ui_down")
269:名前は開発中のものです。
24/04/17 14:58:45.87 S9SgvMuX.net
Inputクラスの記述が抜けてた
var movement = Input.get_axis("ui_left", "ui_right")
# 上下左右をVector2で取得
var direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
書き足しついでで補足すると意味的にはこんなん
1軸の向き = get_axis(-方向、+方向)
Vector2(x軸の向き, y軸の向き) = get_vector(x軸負方向、x軸正方向、y軸負方向、y軸正方向)
移動処理が簡潔に書ける
extends Node2D
const SPEED = 300.0
func _process(delta):
var direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
position += direction * SPEED * delta
270:名前は開発中のものです。
24/04/17 17:28:28.38 c7cp2PUr.net
どうも
get_vectorで方角を返すってやつですね
271:名前は開発中のものです。
24/04/18 11:29:20.11 o06ulE3s.net
godotは割とredditが賑わってるのがありがたいは
むしろunityより賑わってるのが謎
272:名前は開発中のものです。
24/04/19 18:17:49.55 611er4q0.net
配列特定の値を探したい場合、forで回して比較演算子かfindか使い分けはどうすればいいの?
273:名前は開発中のものです。
24/04/19 19:27:59.70 6eKwksTY.net
関数の方が安全で手っ取り早い代わりに若干低速な可能性がある どれくらい差があるかは知らない
配列の中身が順番に並んでるならbsearch使うか二分探索自分で書けば速い
274:名前は開発中のものです。
24/04/19 19:31:58.50 611er4q0.net
どうも
どのみち二次元だとfind使えないみたいですね
275:名前は開発中のものです。
24/04/20 11:57:25.68 gSjSgOMM.net
一時的にスクリプトを停止出来ますか?
processをdisableしてもprintはされるみたいです
276:名前は開発中のものです。
24/04/21 10:08:48.46 YXvcVHHE.net
定型文登録って合ったっけ?
以下の4方向バージョンを登録しておきたい
if Input.is_action_just_pressed("ui_up"):
move()
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
135日前に更新/257 KB
担当:undef