[過去ログ] 【軽量】godot engine【無料】 part3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
37: 2024/02/26(月)13:59 ID:Hx1+xlVG(1/3) AAS
型付けする変数としない変数って、混在してもいいんですかね?
補完をだしたい場合は混在させてる
>>35
そう、出来るみたい
そういうパズルゲーム作ろう
38: 2024/02/26(月)15:09 ID:Hx1+xlVG(2/3) AAS
スレが賑わっていて嬉しいナリね
39: 2024/02/26(月)17:14 ID:Hx1+xlVG(3/3) AAS
見た目から入る作り方もありだと思う
見た目がしょぼいとやる気がなくなるから
peglinパクる
40: 2024/02/27(火)14:40 ID:BNNCM4m5(1/2) AAS
contact monitorの設定は地雷だな
41: 2024/02/27(火)17:58 ID:BNNCM4m5(2/2) AAS
動画リンク[YouTube]
予測軌道の描画かなり難しそうなんだけど、簡単にやる方法ないかな?
仮の弾丸を発射させることを考えてみたけど
42(1): 2024/02/27(火)18:34 ID:zilPbKX1(1) AAS
コードを書き忘れないにはテンプレート化して最初からコードが書かれている状態にする
外部リンク[html]:docs.godotengine.org
予測軌道を描きたければ物理エンジンに頼らず自前の物理演算式を用意する
外部リンク:karanokan.info
43: 2024/02/28(水)10:16 ID:Dy7hE2G/(1/4) AAS
>>42
カスタムテンプレートってコピペと大差ない?
characterbodyには最初から付いてるね
>>42
なるほど characterbodyのスクリプトで弾丸を動かすのですか。
rigidbodyを使ったら予測が難しくなりますか。
44(1): 2024/02/28(水)10:41 ID:iBFNXgc5(1/3) AAS
テンプレートは自動化されたコピペ、自動なら手間要らずで忘れる事もない
contact_monitorに関しては処理が重いから初期値がオフなので
そこを意識しないと別な問題を誘発する
予測軌道を描くには点や線の座標が必要になる
RigidBodyを使って座標取得はできなくはないが手間が掛かる
RigidBodyを使う場合はどうすればできるか考えてみて欲しい
その手間を無くす為に自前で座標を計算する
45: 2024/02/28(水)11:10 ID:Dy7hE2G/(2/4) AAS
>>44
ありがとう
チャレンジしてみます
確かにrigidbodyを使う場合、物理エンジンの中?に触らないといけないイメージ
46(1): 2024/02/28(水)11:21 ID:iBFNXgc5(2/3) AAS
物理エンジン内は触れないから
状態を保存し必要な所まで時間を進めて座標を取得し状態を戻す手順になる
文章にすると一行だが状態の保存と復元は処理コストがとても高い
ゲーム物理はなんちゃってで十分なので本格的演算は不要
初速と重力加速度だけでそれっぽく動く
47: 2024/02/28(水)12:31 ID:Dy7hE2G/(3/4) AAS
外部リンク:karanokan.info
>>46
これはあえて、rigidbodyを使ってやってるんでしょうか?
48: 2024/02/28(水)13:06 ID:iBFNXgc5(3/3) AAS
そのスクリプトは黒で予測軌道を描く部分だけでRigidBodyを使った計算はしていない
19行目が初速
vel = new Vector3(initVel * Mathf.Cos(angle), initVel * Mathf.Sin(angle), 0);
33行目が重力加速
y = vel.y * time - 0.5f * gravity * time * time;
時間毎に線分を描いている
実行結果はRigidBodyを使って線分通りに動くかの確認
省4
49: 2024/02/28(水)15:11 ID:Dy7hE2G/(4/4) AAS
ありがとう
一定間隔で座標を取る感じですね
50: 2024/02/29(木)12:21 ID:DIGOgAn2(1/8) AAS
characterbodyでボールの挙動をする場合、バウンドやフリクションの設定も自分で作る感じでしょうか?
move_and_collideで初速と重力は出来ました
51: 2024/02/29(木)12:53 ID:HPBXgIgC(1/6) AAS
反射や摩擦も反映して予測軌道として表示したければそうなる
実現は可能だが要素を足せば足すほどコードも複雑になる
全ての物理現象に対して予測線は必要なのか動作停止まで予測線を描くのか?
何をしたいかによるが自分なら射出方向と最初のヒットまで表示できていれば十分とする
ゲームでそこまで処理している例が思いつかないが何か知っている物はあるかい?
投擲武器で反射後まで予測してるのはあった気はするが実装としてはコスト高
大抵は最初の接触点までで最後まで反射させるのは直線移動の物だと思う
52(1): 2024/02/29(木)13:09 ID:HPBXgIgC(2/6) AAS
反射や摩擦を含んだ挙動が必要ならRigidBodyを使うと良い
予測線処理に自前演算を勧めたが最初の接触までの予測はそれで行い
実際の挙動はRigidBodyに任せるという方法も取れる
自前演算と標準の演算で結果に差がでるかもしれないが誤差で許容する
どれくらいの精度が必要か開発コストは見合っているかの判断が要求される
53: 2024/02/29(木)13:10 ID:DIGOgAn2(2/8) AAS
ありがとうございます
反射後の予測軌道ではなくて、単にブロック崩しのような壁バウンドを作りたかったです(重力あり)
説明が悪かったです
frictionの記事は見つかりました
バウンドは単純にノーマルを逆にすればいいんですね コードでやるのは初めてなので
54: 2024/02/29(木)13:14 ID:DIGOgAn2(3/8) AAS
>>52
そっちのほうがスマートかもしれないですね
55: 2024/02/29(木)13:18 ID:HPBXgIgC(3/6) AAS
ブロック崩しで良いなら
反射は反転で良いし壁に角度があってもそれほど処理は複雑にならない
摩擦も壁に当たったら適当に減速で良い
厳密な物理シミュレーションする必要がなければ自分で作った物理法則で問題ない
予測軌道で最初の方向性を示すだけで良いならRigidBodyに任せるのが楽
56: 2024/02/29(木)14:26 ID:DIGOgAn2(4/8) AAS
動画リンク[YouTube]
こんな感じの物理ありのものですね
玉の動きを見ると物理っぽくない感じです
57: 2024/02/29(木)14:26 ID:DIGOgAn2(5/8) AAS
peglinというゲームです
58: 2024/02/29(木)15:14 ID:HPBXgIgC(4/6) AAS
放物線を描いてるから重力はある物理演算だね
予測軌道は初回ヒットまででヒット後は軌跡を描いて跳ね返り表現
単純だから自前でやっても良いしRigidBodyでやっても良い
RigidBodyの方が物理パラメータ色々弄るの楽だからRigidBodyを勧めるかな
今までの知識を纏められたら同じ物は作れるんじゃない?
59: 2024/02/29(木)17:11 ID:DIGOgAn2(6/8) AAS
どうもです
じゃあ勉強がてらコードでやってみます
60: 2024/02/29(木)17:16 ID:DIGOgAn2(7/8) AAS
まよったらエンジンに頼らない方向で作成してみる
難しすぎて出来ないことならともかく
61: 2024/02/29(木)20:06 ID:DIGOgAn2(8/8) AAS
何度もごめんなさい
動画リンク[YouTube]
よくあるブロック崩しはこの動きですが、スクリプトだと勢いが徐々に減算していく動きっていうのは難しいんでしょうか。
62(2): 2024/02/29(木)20:28 ID:HPBXgIgC(5/6) AAS
衝突時や毎フレーム速度を減少する
空気抵抗的に徐々に速度を落とすなら毎フレーム減速すれば良い
コードで実現するのは難しいと思い込んでいる様に思われるが少し違う
再現したい事象はどういう式で成り立っているかの数学的知識が求められている
演算式をコード化するのは機械的作業でしかない
63(1): 2024/02/29(木)20:34 ID:QQLqWhwV(1) AAS
ていうか張り付けた動画に>>62の言ってる衝突時の減衰のヒントあるよね、ちゃんとコード読もう
64: 2024/02/29(木)20:51 ID:HPBXgIgC(6/6) AAS
リンク再生して等速運動しかしてないなって思ってたが時間指定付いてたの気が付いてなかったわ
確かに動画内で説明してるな
今は英語判らなくても自動翻訳で日本語字幕付けられるから上手く使う癖は付けた方が良いな
とは言え自分も先日どうしても判らない処理の解説が動画しかなかったので翻訳も付けて見てみたが
やっぱり判らなかったので苦手意識があると内容が理解し難くなるってのはあるかもね
65: 2024/03/01(金)12:37 ID:NSS/yx2e(1/5) AAS
>>62
>>63
ありがとうございます
多少の数学の知識が必要になるんですかね
公式など探してみます
66: 2024/03/01(金)13:22 ID:NSS/yx2e(2/5) AAS
物理エンジンもこのようにコードで制御しているのでしょうか
より複雑でしょうけども
67(1): 2024/03/01(金)16:40 ID:7q9U3fNz(1/5) AAS
ゲームエンジンも物理エンジンもプログラム
昔は全部自分で作っていたものがライブラリ化されエンジンとなった
既にある同じ目的のコードを自前で書くのは無駄なのでエンジンが使われる
既にある物を自前で作るのは「車輪の再発明」と言われ忌避される事が多い
しかしながら原理を知らずに使っていると様々な弊害もあるので
同じ物を作れなくともある程度の理解はあると良い
エンジンが望み通りに動かないなら自分で対処する事になる
省2
68: 2024/03/01(金)17:18 ID:NSS/yx2e(3/5) AAS
>>67
上のpeglinくらいんものはコードでやってみます(*´ω`*)
69(4): 2024/03/01(金)17:44 ID:WaedCGGn(1) AAS
軌道予測はgodotの物理だと予測用のオブジェクト用意した上で実際に動かして軌跡保存してみたいな手法はあるみたい?
外部リンク:github.com
70: 2024/03/01(金)17:47 ID:NSS/yx2e(4/5) AAS
外部リンク:www.sbcr.jp
そういえばこれを持っていたけど、このくらいの理解では足りないのかな?
この本のあまり理解出来なかったけど
71(1): 2024/03/01(金)18:08 ID:7q9U3fNz(2/5) AAS
知識は多ければ多い方が良い
無駄知識でも間違った情報でもそうだと知っていれば役に立つ事もある
その本は題目を見る限りでは有用な情報なので理解できるならその方が良い
内容が難しく理解出来ないならもっと簡単な所から進めるべき
原理を理解できなくても目的通りにエンジンを使えていれば及第点
コードで目的を達成する手段があれば十分
何かあった時に自分で対処する為にそれらの知識が必要
省1
72: 2024/03/01(金)18:16 ID:7q9U3fNz(3/5) AAS
>>69
move_and_collideを1フレーム中に連続使用するのは思いつかなかった
この方法で行けそうな気はするね
自前でやると誤差が気になったのでエンジンに任せられるならその方が良いね
73(1): 2024/03/01(金)18:25 ID:jbulu0J9(1/2) AAS
すいません、初心者ですが質問させてください。
数学で言えば、1.7320508のアークタンジェントは約60ですよね?
でも、godotで
print(atan(1.7320508)) と書いても
print(atan2(1.7320508 , 1) と書いても、
1.04719.......と謎の数字を返してきます。
これは何の数字ですか?
省1
74: 2024/03/01(金)18:30 ID:NSS/yx2e(5/5) AAS
>>71
ありがとう
物理なしでやります
案外、脱線しているときにアイディアでたりしますしね(*´ω`*)
75(1): 2024/03/01(金)18:36 ID:7q9U3fNz(4/5) AAS
戻り値に想定している単位が違うのじゃろ
print(rad_to_deg(atan(1.7320508)))
print(rad_to_deg(atan2(1.7320508, 1)))
76: 2024/03/01(金)18:40 ID:l95YCyF0(1) AAS
>>73
2π(6.28...)が360°のラジアン(弧度法)
77: sage 2024/03/01(金)18:44 ID:jbulu0J9(2/2) AAS
>>75、76
あーラジアンでしたっけ…
もともと数学苦手なうえにもう忘れてました
rad_to_degって組み込み関数があるんですね
覚えておきます
ありがとう
78: 2024/03/01(金)18:47 ID:7q9U3fNz(5/5) AAS
ちょっと回答が投げやりすぎた
座標から角度の変換はVectorクラスに便利メソッドあるからそれ使うと良いよ
print(rad_to_deg(Vector2(1, 1).angle()))
79: 2024/03/02(土)06:26 ID:fHi1iYWZ(1/3) AAS
godotって3dオブジェクトを2dとして扱う機能はないんですよね。
unityのように
80: 2024/03/02(土)11:35 ID:fHi1iYWZ(2/3) AAS
エディタをフローティングにすると画面大きくて使いやすい
今まで気づかなかった(*´ω`*)、、、
81: 2024/03/02(土)11:37 ID:fHi1iYWZ(3/3) AAS
しかし、gptがあるとだいぶ楽だねぇ
godot4には対応してないみたいだけど
82: 2024/03/02(土)19:41 ID:2foM6lQ9(1) AAS
無いわけじゃないけど
自分の知る限りはビューポート使うか3D素材をgodot外で2Dに起こすくらいじゃないか
もっと効率のいい方法があるなら自分が知りたいくらいだ
じゃなきゃ最初から3Dシーンで2.5Dゲーム作るほうが早いだろうな
83: 2024/03/03(日)02:31 ID:EG5KL4S5(1) AAS
Unityは3Dオブジェクトを2Dにしてるんじゃなくて2Dを全部3D空間上に配置してて、2Dのテンプレートも内部的には全部3Dだからそういうことができてるように見せかけてるだけ
84: 2024/03/03(日)04:50 ID:UwGRXxZo(1/3) AAS
あの2d表示が便利だなと思うこともありますよね
3dから2d素材作るために一度画像にレンダリングしないといけないのも手間ですし
85: 2024/03/03(日)04:55 ID:UwGRXxZo(2/3) AAS
スキルもないしコツコツと小さいクソゲー作るしかないね
86: 2024/03/03(日)06:30 ID:UwGRXxZo(3/3) AAS
他人のコードを読む能力がないわ
難しいね 他人のコードは
87(1): 2024/03/04(月)14:33 ID:Y8uyU2JR(1/4) AAS
質問なんですが、下にあるデバッガーの位置は変更出来ないのでしょうか?
少し邪魔に感じることがあり、フローティング表示にしたいのですが
88(1): 2024/03/04(月)14:39 ID:MRQbhd4x(1/4) AAS
>>69
コードをコピペして動かしてみた
予測軌道は描けたが実際のRigidBodyの挙動とは同じにならなかったので調整は必要そう
書かれていない初期設定部分で正しく調整されているのかも知れない
物理エンジンは自分の思い通りに動かない事が多くて悩ましい
89: 2024/03/04(月)14:47 ID:MRQbhd4x(2/4) AAS
>>87
フローティングボタンが付いてないのだから出来ないのだろう
現在開いているタブクリックで最小化するので十分ではないのか?
90: 2024/03/04(月)15:15 ID:Y8uyU2JR(2/4) AAS
ありがとう
諦める
実行すると勝手に開いたりするのが煩わしいなと感じて
91: 2024/03/04(月)15:49 ID:MRQbhd4x(3/4) AAS
[エディタ設定][実行][出力][Always Open Output on Play]をfalseにする
変更反映はエディタ再起動後
92: 2024/03/04(月)16:51 ID:Y8uyU2JR(3/4) AAS
ありがとう
93: 2024/03/04(月)18:19 ID:Y8uyU2JR(4/4) AAS
extends Node2D
var line2d_node:Line2D
var mouse_pos
func _ready() -> void:
line2d_node = get_node("Line2D")
func draw_to_cursor():
for i in range(1):
省15
94: 2024/03/04(月)18:58 ID:maXrH/rV(1) AAS
点追加→描画→クリアじゃなくて最初にクリアしてから点を追加する様にすればいいんじゃない?
それかLine2dは使わずdraw_line()で描くとか
95(1): 2024/03/04(月)21:05 ID:MRQbhd4x(4/4) AAS
ほぼ正解なのに後一考が足りないのが惜しい
clear_points()が何をする命令かを理解し
処理の最後にclear_points()するとどうなるのか考えれば自明だと思うのだがな
96: 2024/03/05(火)05:33 ID:NetOoeu2(1/3) AAS
リファレンス見直してみます ありがとう
消し方の部分ですね
97(1): 2024/03/05(火)06:35 ID:NetOoeu2(2/3) AAS
godotってaiインテリセンスとかないのですかね?
visual studioのあれは楽すぎてビビった記憶があります
先の先まで先読みしてくれるので
98: 2024/03/05(火)12:37 ID:NetOoeu2(3/3) AAS
>>95
こんなふうに描画関数内の削除ではなく、フレーム内で削除するようにしたらうまくいきました。
どうもコードの流れが分かってないみたいです
外部リンク:imgur.com
図にしてみましたがこれの違いを言語化出来ないでしょうか?
外部リンク:ideone.com
extends Node2D
省16
99(1): 2024/03/05(火)13:32 ID:LGdF4KOk(1) AAS
図表が何の例なのかが判らないのでそれとは違う話をする
GUIアプリはライフサイクルに従って動作する
Godotの良い例が見つからなかったのでUnityのライフサイクルを元に話を進める
外部リンク[html]:docs.unity3d.com
図中の処理を以下の様に読み替えて欲しい
Awake=_init()
Start=_ready()
省11
100(1): 2024/03/05(火)14:58 ID:2jT49Fhn(1) AAS
そもそもdraw_to_cursor内に描画処理は入ってない
add_pointは後から_draw()で描画される事になる線を構成する点を追加するというだけ
101(1): 2024/03/05(火)16:14 ID:WbtfMd0/(1) AAS
>>97
vscode経由でやればできるにはできるけど
gdscriptだと実用レベルのコードはほぼでないよ
102: 2024/03/06(水)06:26 ID:0YKHfOtY(1/5) AAS
>>99
返信遅れてごめんなさい
寝不足でずっと寝てました
>>100
あっそうか、マウスクリック時にしか描画されないという点が問題だったんですね
>>101
unity c#より記述量少ないからなくてもいいかもですね
103: 2024/03/06(水)06:39 ID:xC/Ga180(1) AAS
自分は同じような内容列記するときだけ使ってるかな
APIの使い方が間違ってたり、文法がおかしかったりと普段使いはむしろ邪魔
104: 2024/03/06(水)06:45 ID:0YKHfOtY(2/5) AAS
放物線あと2日くらいで完成させる(*´ω`*)
105(1): 2024/03/06(水)06:49 ID:0YKHfOtY(3/5) AAS
インテリコードっていう呼び名でしたっけね
106: 2024/03/06(水)17:57 ID:0YKHfOtY(4/5) AAS
is_mouse_button_pressedはありますけど、
マウスにjust pressed系はないんですかな?
107: 2024/03/06(水)18:12 ID:0YKHfOtY(5/5) AAS
あっ、action pressのほうでやるんすね ごめんなさい(*´ω`*)
108: 2024/03/06(水)18:15 ID:mNCkxtfo(1) AAS
そもそもjust pressedはactionにしかない
109(1): 2024/03/07(木)14:31 ID:pWb+fA4v(1) AAS
>>105
IntelliCodeはGDScriptに対応してないね
VSCodeでGDScriptを書いても無理だわ
110: 2024/03/07(木)15:51 ID:qvtd0tl6(1) AAS
今日仕入れた豆知識
ランダムでtrueかfalseの2択を使いたい時
var random : bool = randf() > 0.5
この1行でOK
111: 2024/03/08(金)10:20 ID:G13/EPQ6(1) AAS
randiの方が早いよ
112(1): 2024/03/08(金)15:09 ID:4aurAYnx(1) AAS
速度詰めるなら(randi() & 1) == 1;とか?
113(1): 軌道予測 2024/03/08(金)19:43 ID:vGL0nvHr(1) AAS
軌道予測の者です
考え方として、予測軌道を描きたい場合、軌道予測用のオブジェクトを一度投げないと、ポイントを取得出来ないのではないでしょうか?
物理を使わない場合、方角と力の値があれば、そこから事前に予測出来るのでしょうか?
方法を思いつかなかったので質問させてください
>>109
ですよね(*´ω`*)
114: 2024/03/08(金)23:32 ID:Eb0+PHr0(1/2) AAS
>>69
>>88の解決法が判った
予想通り初期設定が足りていなかった
RigidBody2Dのcustom_integratorを有効にする事できっちり同じ挙動になった
衝突まで出来たが反射が出来てないので課題は残る
115: 2024/03/08(金)23:52 ID:Eb0+PHr0(2/2) AAS
>>112に補足
速さを求めるなら==は要らない
bool型に代入すると型変換で遅くなるので代入するならint型
var random:int = randi() & 1
しないなら
if randi() & 1:
pass
省1
116(1): 2024/03/09(土)00:57 ID:TY4JoG/O(1/3) AAS
>>113
>物理を使わない場合、方角と力の値があれば、そこから事前に予測出来るのでしょうか?
できる
予測用のオブジェクトを投げなくても計算で求められるが
RigidBodyがやってくれている計算と同等の処理は必要
ノードツリーにSprite2Dがあるとして以下のコードで右上方向に投げた場合の再現ができる
var d:Vector2 = Vector2(500, -500) #初期運動量
省6
117: 2024/03/09(土)01:59 ID:TY4JoG/O(2/3) AAS
言い回しは運動量dじゃなく速度velocityとした方が良いかな?
上下前次1-新書関写板覧索設栞歴
あと 885 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s