[表示 : 全て 最新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がたててください

37 名前:名前は開発中のものです。 [2024/02/26(月) 13:59:54.24 ID:Hx1+xlVG.net]
型付けする変数としない変数って、混在してもいいんですかね?
補完をだしたい場合は混在させてる

>>35
そう、出来るみたい
そういうパズルゲーム作ろう

38 名前:名前は開発中のものです。 [2024/02/26(月) 15:09:58.13 ID:Hx1+xlVG.net]
スレが賑わっていて嬉しいナリね

39 名前:名前は開発中のものです。 [2024/02/26(月) 17:14:01.53 ID:Hx1+xlVG.net]
見た目から入る作り方もありだと思う
見た目がしょぼいとやる気がなくなるから
peglinパクる

40 名前:名前は開発中のものです。 [2024/02/27(火) 14:40:25.81 ID:BNNCM4m5.net]
contact monitorの設定は地雷だな

41 名前:名前は開発中のものです。 [2024/02/27(火) 17:58:16.94 ID:BNNCM4m5.net]
https://www.youtube.com/watch?v=2eqRX3rZrZE
予測軌道の描画かなり難しそうなんだけど、簡単にやる方法ないかな?
仮の弾丸を発射させることを考えてみたけど

42 名前:名前は開発中のものです。 mailto:sage [2024/02/27(火) 18:34:17.04 ID:zilPbKX1.net]
コードを書き忘れないにはテンプレート化して最初からコードが書かれている状態にする
https://docs.godotengine.org/ja/4.x/tutorials/scripting/creating_script_templates.html


予測軌道を描きたければ物理エンジンに頼らず自前の物理演算式を用意する
https://karanokan.info/2018/08/01/post-672/

43 名前:名前は開発中のものです。 [2024/02/28(水) 10:16:40.11 ID:Dy7hE2G/.net]
>>42
カスタムテンプレートってコピペと大差ない?
characterbodyには最初から付いてるね

>>42
なるほど characterbodyのスクリプトで弾丸を動かすのですか。
rigidbodyを使ったら予測が難しくなりますか。

44 名前:名前は開発中のものです。 mailto:sage [2024/02/28(水) 10:41:06.33 ID:iBFNXgc5.net]
テンプレートは自動化されたコピペ、自動なら手間要らずで忘れる事もない
contact_monitorに関しては処理が重いから初期値がオフなので
そこを意識しないと別な問題を誘発する

予測軌道を描くには点や線の座標が必要になる
RigidBodyを使って座標取得はできなくはないが手間が掛かる
RigidBodyを使う場合はどうすればできるか考えてみて欲しい
その手間を無くす為に自前で座標を計算する

45 名前:名前は開発中のものです。 [2024/02/28(水) 11:10:36.60 ID:Dy7hE2G/.net]
>>44
ありがとう
チャレンジしてみます

確かにrigidbodyを使う場合、物理エンジンの中?に触らないといけないイメージ



46 名前:名前は開発中のものです。 mailto:sage [2024/02/28(水) 11:21:17.38 ID:iBFNXgc5.net]
物理エンジン内は触れないから
状態を保存し必要な所まで時間を進めて座標を取得し状態を戻す手順になる
文章にすると一行だが状態の保存と復元は処理コストがとても高い

ゲーム物理はなんちゃってで十分なので本格的演算は不要
初速と重力加速度だけでそれっぽく動く

47 名前:名前は開発中のものです。 [2024/02/28(水) 12:31:35.28 ID:Dy7hE2G/.net]
https://karanokan.info/2018/08/01/post-672/
>>46
これはあえて、rigidbodyを使ってやってるんでしょうか?

48 名前:名前は開発中のものです。 mailto:sage [2024/02/28(水) 13:06:22.58 ID:iBFNXgc5.net]
そのスクリプトは黒で予測軌道を描く部分だけで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を使って線分通りに動くかの確認
RigidBodyと全く同じにしようすると計算が若干複雑になる
y = vel.y * time - 0.5f * gravity * (time * time + time * Time.fixedDeltaTime);

適当に見繕った参考ページでUnityの例なのでRigidBodyの挙動は異なる可能性がある
RigidBodyを模倣するより座標を自前計算する方が楽

49 名前:名前は開発中のものです。 [2024/02/28(水) 15:11:50.00 ID:Dy7hE2G/.net]
ありがとう
一定間隔で座標を取る感じですね

50 名前:名前は開発中のものです。 [2024/02/29(木) 12:21:24.56 ID:DIGOgAn2.net]
characterbodyでボールの挙動をする場合、バウンドやフリクションの設定も自分で作る感じでしょうか?
move_and_collideで初速と重力は出来ました

51 名前:名前は開発中のものです。 mailto:sage [2024/02/29(木) 12:53:46.44 ID:HPBXgIgC.net]
反射や摩擦も反映して予測軌道として表示したければそうなる
実現は可能だが要素を足せば足すほどコードも複雑になる
全ての物理現象に対して予測線は必要なのか動作停止まで予測線を描くのか?
何をしたいかによるが自分なら射出方向と最初のヒットまで表示できていれば十分とする

ゲームでそこまで処理している例が思いつかないが何か知っている物はあるかい?
投擲武器で反射後まで予測してるのはあった気はするが実装としてはコスト高
大抵は最初の接触点までで最後まで反射させるのは直線移動の物だと思う

52 名前:名前は開発中のものです。 mailto:sage [2024/02/29(木) 13:09:07.90 ID:HPBXgIgC.net]
反射や摩擦を含んだ挙動が必要ならRigidBodyを使うと良い
予測線処理に自前演算を勧めたが最初の接触までの予測はそれで行い
実際の挙動はRigidBodyに任せるという方法も取れる
自前演算と標準の演算で結果に差がでるかもしれないが誤差で許容する
どれくらいの精度が必要か開発コストは見合っているかの判断が要求される

53 名前:名前は開発中のものです。 [2024/02/2 ]
[ここ壊れてます]

54 名前:9(木) 13:10:48.11 ID:DIGOgAn2.net mailto: ありがとうございます
反射後の予測軌道ではなくて、単にブロック崩しのような壁バウンドを作りたかったです(重力あり)
説明が悪かったです

frictionの記事は見つかりました
バウンドは単純にノーマルを逆にすればいいんですね コードでやるのは初めてなので
[]
[ここ壊れてます]

55 名前:名前は開発中のものです。 [2024/02/29(木) 13:14:39.43 ID:DIGOgAn2.net]
>>52
そっちのほうがスマートかもしれないですね



56 名前:名前は開発中のものです。 mailto:sage [2024/02/29(木) 13:18:05.73 ID:HPBXgIgC.net]
ブロック崩しで良いなら
反射は反転で良いし壁に角度があってもそれほど処理は複雑にならない
摩擦も壁に当たったら適当に減速で良い
厳密な物理シミュレーションする必要がなければ自分で作った物理法則で問題ない

予測軌道で最初の方向性を示すだけで良いならRigidBodyに任せるのが楽

57 名前:名前は開発中のものです。 [2024/02/29(木) 14:26:27.07 ID:DIGOgAn2.net]
https://youtu.be/D562d3qd98M?si=5RayWB3a3dH67mpb&t=22
こんな感じの物理ありのものですね
玉の動きを見ると物理っぽくない感じです

58 名前:名前は開発中のものです。 [2024/02/29(木) 14:26:37.93 ID:DIGOgAn2.net]
peglinというゲームです

59 名前:名前は開発中のものです。 mailto:sage [2024/02/29(木) 15:14:10.01 ID:HPBXgIgC.net]
放物線を描いてるから重力はある物理演算だね
予測軌道は初回ヒットまででヒット後は軌跡を描いて跳ね返り表現
単純だから自前でやっても良いしRigidBodyでやっても良い
RigidBodyの方が物理パラメータ色々弄るの楽だからRigidBodyを勧めるかな
今までの知識を纏められたら同じ物は作れるんじゃない?

60 名前:名前は開発中のものです。 [2024/02/29(木) 17:11:25.31 ID:DIGOgAn2.net]
どうもです
じゃあ勉強がてらコードでやってみます

61 名前:名前は開発中のものです。 [2024/02/29(木) 17:16:30.98 ID:DIGOgAn2.net]
まよったらエンジンに頼らない方向で作成してみる
難しすぎて出来ないことならともかく

62 名前:名前は開発中のものです。 [2024/02/29(木) 20:06:33.97 ID:DIGOgAn2.net]
何度もごめんなさい
https://youtu.be/174vFOCbONI?si=RU6NyS9XwuCQzUUT&t=133
よくあるブロック崩しはこの動きですが、スクリプトだと勢いが徐々に減算していく動きっていうのは難しいんでしょうか。

63 名前:名前は開発中のものです。 mailto:sage [2024/02/29(木) 20:28:47.87 ID:HPBXgIgC.net]
衝突時や毎フレーム速度を減少する
空気抵抗的に徐々に速度を落とすなら毎フレーム減速すれば良い

コードで実現するのは難しいと思い込んでいる様に思われるが少し違う
再現したい事象はどういう式で成り立っているかの数学的知識が求められている
演算式をコード化するのは機械的作業でしかない

64 名前:名前は開発中のものです。 mailto:sage [2024/02/29(木) 20:34:52.28 ID:QQLqWhwV.net]
ていうか張り付けた動画に>>62の言ってる衝突時の減衰のヒントあるよね、ちゃんとコード読もう

65 名前:名前は開発中のものです。 mailto:sage [2024/02/29(木) 20:51:41.92 ID:HPBXgIgC.net]
リンク再生して等速運動しかしてないなって思ってたが時間指定付いてたの気が付いてなかったわ
確かに動画内で説明してるな
今は英語判らなくても自動翻訳で日本語字幕付けられるから上手く使う癖は付けた方が良いな

とは言え自分も先日どうしても判らない処理の解説が動画しかなかったので翻訳も付けて見てみたが
やっぱり判らなかったので苦手意識があると内容が理解し難くなるってのはあるかもね



66 名前:名前は開発中のものです。 [2024/03/01(金) 12:37:24.64 ID:NSS/yx2e.net]
>>62
>>63
ありがとうございます
多少の数学の知識が必要になるんですかね
公式など探してみます

67 名前:名前は開発中のものです。 [2024/03/01(金) 13:22:36.85 ID:NSS/yx2e.net]
物理エンジンもこのようにコードで制御しているのでしょうか
より複雑でしょうけども

68 名前:名前は開発中のものです。 mailto:sage [2024/03/01(金) 16:40:07.75 ID:7q9U3fNz.net]
ゲームエンジンも物理エンジンもプログラム
昔は全部自分で作っていたものがライブラリ化されエンジンとなった

既にある同じ目的のコードを自前で書くのは無駄なのでエンジンが使われる
既にある物を自前で作るのは「車輪の再発明」と言われ忌避される事が多い
しかしながら原理を知らずに使っていると様々な弊害もあるので
同じ物を作れなくともある程度の理解はあると良い
エンジンが望み通りに動かないなら自分で対処する事になる

数学や物理学に対して開発者はどうあるべきかは以下の「まえがき」を読んでみて欲しい
https://codezine.jp/article/detail/10873

69 名前:名前は開発中のものです。 [2024/03/01(金) 17:18:58.23 ID:NSS/yx2e.net]
>>67
上のpeglinくらいんものはコードでやってみます(*´ω`*)

70 名前:名前は開発中のものです。 mailto:sage [2024/03/01(金) 17:44:41.28 ID:WaedCGGn.net]
軌道予測はgodotの物理だと予測用のオブジェクト用意した上で実際に動かして軌跡保存してみたいな手法はあるみたい?
https://github.com/godotengine/godot-proposals/issues/2821#issuecomment-1941706422

71 名前:名前は開発中のものです。 [2024/03/01(金) 17:47:21.10 ID:NSS/yx2e.net]
https://www.sbcr.jp/product/4797376999/
そういえばこれを持っていたけど、このくらいの理解では足りないのかな?
この本のあまり理解出来なかったけど

72 名前:名前は開発中のものです。 mailto:sage [2024/03/01(金) 18:08:03.91 ID:7q9U3fNz.net]
知識は多ければ多い方が良い
無駄知識でも間違った情報でもそうだと知っていれば役に立つ事もある
その本は題目を見る限りでは有用な情報なので理解できるならその方が良い
内容が難しく理解出来ないならもっと簡単な所から進めるべき

原理を理解できなくても目的通りにエンジンを使えていれば及第点
コードで目的を達成する手段があれば十分
何かあった時に自分で対処する為にそれらの知識が必要
知識が多い方が解決手段を多く選べる

73 名前:名前は開発中のものです。 mailto:sage [2024/03/01(金) 18:16:46.47 ID:7q9U3fNz.net]
>>69
move_and_collideを1フレーム中に連続使用するのは思いつかなかった
この方法で行けそうな気はするね
自前でやると誤差が気になったのでエンジンに任せられるならその方が良いね

74 名前:名前は開発中のものです。 [2024/03/01(金) 18:25:11.08 ID:jbulu0J9.net]
すいません、初心者ですが質問させてください。
数学で言えば、1.7320508のアークタンジェントは約60ですよね?
でも、godotで
print(atan(1.7320508)) と書いても
print(atan2(1.7320508 , 1) と書いても、
1.04719.......と謎の数字を返してきます。
これは何の数字ですか?
座標から角度を求めるのってどうやればいいんでしょうか?

75 名前:名前は開発中のものです。 [2024/03/01(金) 18:30:36.78 ID:NSS/yx2e.net]
>>71
ありがとう
物理なしでやります
案外、脱線しているときにアイディアでたりしますしね(*´ω`*)



76 名前:名前は開発中のものです。 mailto:sage [2024/03/01(金) 18:36:19.64 ID:7q9U3fNz.net]
戻り値に想定している単位が違うのじゃろ
print(rad_to_deg(atan(1.7320508)))
print(rad_to_deg(atan2(1.7320508, 1)))

77 名前:名前は開発中のものです。 mailto:sage [2024/03/01(金) 18:40:34.74 ID:l95YCyF0.net]
>>73
2π(6.28...)が360°のラジアン(弧度法)

78 名前:sage [2024/03/01(金) 18:44:28.99 ID:jbulu0J9.net]
>>75、76
あーラジアンでしたっけ…
もともと数学苦手なうえにもう忘れてました
rad_to_degって組み込み関数があるんですね
覚えておきます
ありがとう

79 名前:名前は開発中のものです。 mailto:sage [2024/03/01(金) 18:47:49.94 ID:7q9U3fNz.net]
ちょっと回答が投げやりすぎた
座標から角度の変換はVectorクラスに便利メソッドあるからそれ使うと良いよ
print(rad_to_deg(Vector2(1, 1).angle()))

80 名前:名前は開発中のものです。 [2024/03/02(土) 06:26:20.23 ID:fHi1iYWZ.net]
godotって3dオブジェクトを2dとして扱う機能はないんですよね。
unityのように

81 名前:名前は開発中のものです。 [2024/03/02(土) 11:35:55.96 ID:fHi1iYWZ.net]
エディタをフローティングにすると画面大きくて使いやすい
今まで気づかなかった(*´ω`*)、、、

82 名前:名前は開発中のものです。 [2024/03/02(土) 11:37:49.45 ID:fHi1iYWZ.net]
しかし、gptがあるとだいぶ楽だねぇ
godot4には対応してないみたいだけど

83 名前:名前は開発中のものです。 mailto:sage [2024/03/02(土) 19:41:02.09 ID:2foM6lQ9.net]
無いわけじゃないけど
自分の知る限りはビューポート使うか3D素材をgodot外で2Dに起こすくらいじゃないか
もっと効率のいい方法があるなら自分が知りたいくらいだ

じゃなきゃ最初から3Dシーンで2.5Dゲーム作るほうが早いだろうな

84 名前:名前は開発中のものです。 mailto:sage [2024/03/03(日) 02:31:35.80 ID:EG5KL4S5.net]
Unityは3Dオブジェクトを2Dにしてるんじゃなくて2Dを全部3D空間上に配置してて、2Dのテンプレートも内部的には全部3Dだからそういうことができてるように見せかけてるだけ

85 名前:名前は開発中のものです。 [2024/03/03(日) 04:50:28.56 ID:UwGRXxZo.net]
あの2d表示が便利だなと思うこともありますよね
3dから2d素材作るために一度画像にレンダリングしないといけないのも手間ですし



86 名前:名前は開発中のものです。 [2024/03/03(日) 04:55:09.45 ID:UwGRXxZo.net]
スキルもないしコツコツと小さいクソゲー作るしかないね

87 名前:名前は開発中のものです。 [2024/03/03(日) 06:30:48.29 ID:UwGRXxZo.net]
他人のコードを読む能力がないわ
難しいね 他人のコードは

88 名前:名前は開発中のものです。 [2024/03/04(月) 14:33:40.24 ID:Y8uyU2JR.net]
質問なんですが、下にあるデバッガーの位置は変更出来ないのでしょうか?
少し邪魔に感じることがあり、フローティング表示にしたいのですが

89 名前:名前は開発中のものです。 mailto:sage [2024/03/04(月) 14:39:30.96 ID:MRQbhd4x.net]
>>69
コードをコピペして動かしてみた
予測軌道は描けたが実際のRigidBodyの挙動とは同じにならなかったので調整は必要そう
書かれていない初期設定部分で正しく調整されているのかも知れない
物理エンジンは自分の思い通りに動かない事が多くて悩ましい

90 名前:名前は開発中のものです。 mailto:sage [2024/03/04(月) 14:47:11.25 ID:MRQbhd4x.net]
>>87
フローティングボタンが付いてないのだから出来ないのだろう
現在開いているタブクリックで最小化するので十分ではないのか?

91 名前:名前は開発中のものです。 [2024/03/04(月) 15:15:45.96 ID:Y8uyU2JR.net]
ありがとう
諦める

実行すると勝手に開いたりするのが煩わしいなと感じて

92 名前:名前は開発中のものです。 mailto:sage [2024/03/04(月) 15:49:14.81 ID:MRQbhd4x.net]
[エディタ設定][実行][出力][Always Open Output on Play]をfalseにする
変更反映はエディタ再起動後

93 名前:名前は開発中のものです。 [2024/03/04(月) 16:51:04.53 ID:Y8uyU2JR.net]
ありがとう

94 名前:名前は開発中のものです。 [2024/03/04(月) 18:19:56.65 ID:Y8uyU2JR.net]
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):
# 点を打つ処理
var line_point = self.position
line2d_node.add_point(self.position)
line2d_node.add_point(mouse_pos)
print("draw")
line2d_node.clear_points()


連投すみません
数時間やって解決出来なかったので質問させてください

上で放物線の質問をしたものです。

自キャラを起点としてマウス位置にline2dを伸ばしたいのですが、描画されません。
画像のように線を1本だけ描きたい感じです

clear_points関数がなければ描画されるので、この部分の処理がまずいのだと思います。
inputでdraw_to_cursorを実行しているので、マウスを動かしたときに処理が走りますが、瞬時に消えてしまうから問題なのだと思います。
しかし、process内でやってもすぐ消えてしまいます(ラインが描画されない)。
sssp://o.5ch.net/22nar.png

95 名前:名前は開発中のものです。 mailto:sage [2024/03/04(月) 18:58:36.71 ID:maXrH/rV.net]
点追加→描画→クリアじゃなくて最初にクリアしてから点を追加する様にすればいいんじゃない?
それかLine2dは使わずdraw_line()で描くとか



96 名前:名前は開発中のものです。 mailto:sage [2024/03/04(月) 21:05:07.83 ID:MRQbhd4x.net]
ほぼ正解なのに後一考が足りないのが惜しい
clear_points()が何をする命令かを理解し
処理の最後にclear_points()するとどうなるのか考えれば自明だと思うのだがな

97 名前:名前は開発中のものです。 [2024/03/05(火) 05:33:04.51 ID:NetOoeu2.net]
リファレンス見直してみます ありがとう
消し方の部分ですね

98 名前:名前は開発中のものです。 [2024/03/05(火) 06:35:57.44 ID:NetOoeu2.net]
godotってaiインテリセンスとかないのですかね?
visual studioのあれは楽すぎてビビった記憶があります
先の先まで先読みしてくれるので

99 名前:名前は開発中のものです。 [2024/03/05(火) 12:37:06.97 ID:NetOoeu2.net]
>>95
こんなふうに描画関数内の削除ではなく、フレーム内で削除するようにしたらうまくいきました。
どうもコードの流れが分かってないみたいです
https://imgur.com/a/GgVKnGF
図にしてみましたがこれの違いを言語化出来ないでしょうか?



https://ideone.com/hZmhwc
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 名前:名前は開発中のものです。 [2024/03/05(火) 13:32:23.84 ID:LGdF4KOk.net]
図表が何の例なのかが判らないのでそれとは違う話をする
GUIアプリはライフサイクルに従って動作する
Godotの良い例が見つからなかったのでUnityのライフサイクルを元に話を進める
https://docs.unity3d.com/Manual/ExecutionOrder.html
図中の処理を以下の様に読み替えて欲しい
Awake=_init()
Start=_ready()
FixedUpdate=_physics_process()
OnMouseXXX=_input()
Update=_process()

ここで注視するのは画面描画のタイミングでそれは各種Renderingのステージで行われる
Initialization:初期化
Physics:物理演算
Input events:入力反映
Game logic:ゲーム処理
を経て、それらの処理で作られた描画データを元に描画が行われる
描画後は物理演算から繰り返し
これはUnityの例なのでGodotにおいては実行順が異なる可能性がある

101 名前:名前は開発中のものです。 mailto:sage [2024/03/05(火) 14:58:24.96 ID:2jT49Fhn.net]
そもそもdraw_to_cursor内に描画処理は入ってない
add_pointは後から_draw()で描画される事になる線を構成する点を追加するというだけ

102 名前:名前は開発中のものです。 mailto:sage [2024/03/05(火) 16:14:33.95 ID:WbtfMd0/.net]
>>97
vscode経由でやればできるにはできるけど
gdscriptだと実用レベルのコードはほぼでないよ

103 名前:名前は開発中のものです。 [2024/03/06(水) 06:26:28.33 ID:0YKHfOtY.net]
>>99
返信遅れてごめんなさい
寝不足でずっと寝てました

>>100
あっそうか、マウスクリック時にしか描画されないという点が問題だったんですね

>>101
unity c#より記述量少ないからなくてもいいかもですね

104 名前:名前は開発中のものです。 mailto:sage [2024/03/06(水) 06:39:24.06 ID:xC/Ga180.net]
自分は同じような内容列記するときだけ使ってるかな
APIの使い方が間違ってたり、文法がおかしかったりと普段使いはむしろ邪魔

105 名前:名前は開発中のものです。 [2024/03/06(水) 06:45:51.37 ID:0YKHfOtY.net]
放物線あと2日くらいで完成させる(*´ω`*)



106 名前:名前は開発中のものです。 [2024/03/06(水) 06:49:31.06 ID:0YKHfOtY.net]
インテリコードっていう呼び名でしたっけね

107 名前:名前は開発中のものです。 [2024/03/06(水) 17:57:53.24 ID:0YKHfOtY.net]
is_mouse_button_pressedはありますけど、
マウスにjust pressed系はないんですかな?

108 名前:名前は開発中のものです。 [2024/03/06(水) 18:12:02.85 ID:0YKHfOtY.net]
あっ、action pressのほうでやるんすね ごめんなさい(*´ω`*)

109 名前:名前は開発中のものです。 mailto:sage [2024/03/06(水) 18:15:22.40 ID:mNCkxtfo.net]
そもそもjust pressedはactionにしかない

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とか、あれを単純図形でいけるかな?
まあペイントソフトも玉のテクスチャを連続させてるだけだよね






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

前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