【軽量】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 がたててください
2 :名前は開発中のものです。 :2024/02/17(土) 09:53:05.63 ID:lpQfy7dC.net ■非公式フォーラム(redditのほうが人が多いかも) https://www.reddit.com/r/godot/
3 :名前は開発中のものです。 :2024/02/17(土) 10:20:55.34 ID:RX1RYYC1.net >>1 乙 コミュニティのリンク先を見て欲しいのだが>>2 のサイトも公式として紹介されている 公式・非公式綺麗に纏められているのでリンク一つに纏めさせてもらった
4 :名前は開発中のものです。 :2024/02/17(土) 10:41:51.16 ID:lpQfy7dC.net そこまで見てなかったよ(*´ω`*)
5 :名前は開発中のものです。 :2024/02/17(土) 10:46:35.45 ID:8+3skhOA.net >>1 乙
6 :名前は開発中のものです。 :2024/02/17(土) 14:39:20.74 ID:lpQfy7dC.net 低スペpcにはマジありがてぇ
7 :名前は開発中のものです。 :2024/02/17(土) 20:42:22.71 ID:eCZf6LS8.net 1乙、この板って保守とかしないでも大丈夫?
8 :名前は開発中のものです。 :2024/02/18(日) 13:34:45.25 ID:pPH7PCwn.net 必要な作業以外しないってすごく大事だね スムーズに開発するにはスキルが必要 >>7 大丈夫だと思う
9 :名前は開発中のものです。 :2024/02/20(火) 10:36:21.66 ID:TYJz4VqA.net 保守 1週間で作品が完成しなかかっったら次のアイディアを試す 気力がキープ出来ないから
10 :名前は開発中のものです。 :2024/02/21(水) 18:07:53.24 ID:pdI9ZoxT.net 保守 機能が実現できりゃ、難しいコードを使う必要はないのかな
11 :名前は開発中のものです。 :2024/02/22(木) 16:26:12.67 ID:dQUDwmRF.net godotちゃんって公式?ブサくない?
12 :名前は開発中のものです。 :2024/02/22(木) 16:52:16.15 ID:Agf3scM2.net godetteのこと?
13 :名前は開発中のものです。 :2024/02/22(木) 19:26:20.46 ID:pXvMcIso.net golangのキモいマスコットに比べたらマシ
14 :名前は開発中のものです。 :2024/02/22(木) 21:21:45.26 ID:ovsq/5fL.net Unityちゃんと比べるならまだしもデバネズミ比べるのか…
15 :名前は開発中のものです。 :2024/02/22(木) 23:43:19.92 ID:GLgL7d2k.net 可愛いじゃんこいつ https://imgur.com/Kb2ehsl.jpg
16 :名前は開発中のものです。 :2024/02/23(金) 01:57:59.07 ID:Ywxcix4J.net こうしたら可愛い https://i.imgur.com/rxyU6g1.png
17 :名前は開発中のものです。 :2024/02/23(金) 04:35:39.58 ID:nrBRvs4D.net これ? https://pbs.twimg.com/media/DUyWEqhWAAAnWNn.jpg
18 :名前は開発中のものです。 :2024/02/23(金) 04:39:04.18 ID:nrBRvs4D.net こっちのがウケは良さそう https://pbs.twimg.com/media/EvspA_iVoAE1wsi.jpg
19 :名前は開発中のものです。 :2024/02/23(金) 05:07:43.13 ID:I7VJ9j92.net わりとアリだな
20 :名前は開発中のものです。 :2024/02/23(金) 10:51:47.15 ID:SBDKsaXP.net godetteってギークなの?
21 :名前は開発中のものです。 :2024/02/23(金) 13:58:18.82 ID:kaYFHsTE.net バックパックバトルがまさかのGodot製と知って驚いてるんだけど 対戦相手の鯖に一時保存したプレイヤーデータ、デッキ構成はどんな仕組み使ってるんですかね FireBaseとかSilentWolfみたいなサービス?それとも独自鯖立ててデータのやり取りをしてる?
22 :名前は開発中のものです。 :2024/02/23(金) 16:33:12.77 ID:KaOghwk2.net >>21 まさかのどころか昔からyoutubeでgodotのtips紹介してた人達が開発してるし 赤い猫のキャラは古い動画にもいて見おぼえあったからトレーラー見て 「あれ、このゲームあの人らが作ったやつ?」って気づいた
23 :名前は開発中のものです。 :2024/02/23(金) 18:39:03.72 ID:IaItrlHn.net >>18 良き
24 :名前は開発中のものです。 :2024/02/24(土) 00:34:21.72 ID:pQc5HIwF.net キャラクターのスクリプトがだいぶゴチャゴチャしてきたので空ノードに移動周りを分割して置こうかと思ったんですが、 合計の長さはほぼ同じとして、分割すると1つの長いスクリプトより動作速度が遅くなったりしますかね? アクションゲームなので数フレームでも差が出たら困るので…… ちなみにgodotは静的型付けをするだけで結構速度が向上するらしく、 意外と繊細なのかなと思ったので質問した次第です
25 :名前は開発中のものです。 :2024/02/24(土) 09:56:05.94 ID:UJ2cIK+9.net 変数参照が一回増えるんじゃね すでに複雑な関数を呼ぶなら大して変わらんやろう
26 :名前は開発中のものです。 :2024/02/24(土) 11:23:13.63 ID:jvQUe1xj.net ゲームて自分が面白いと思った仕組みや現象から作る? どういうアイディアだと情熱が長続きするか分からん 短期間で作れるものをガンガン作るというのも1つだけど
27 :名前は開発中のものです。 :2024/02/24(土) 18:07:04.50 ID:jvQUe1xj.net いいアイデアがないときどうしたらいいだろう パクリでもいいから作るとか
28 :名前は開発中のものです。 :2024/02/24(土) 18:59:29.01 ID:r2XVQznH.net まだ仕上げるのに精いっぱいで処理速度を気にするレベルまでたどり着いてないよ
29 :名前は開発中のものです。 :2024/02/24(土) 20:15:30.90 ID:oiuR+FqZ.net それはなかなか良い学び姿勢だよ プログラミングでダメな奴はだいたい仕上げる前に「もっとカッコイイしゅっとした方式にしたい」とか 「もっと美しく書くにはどうしたら」とか「コーディング環境をもっとクールにしたい」とか枝葉にこだわって自滅する そういう枝葉は、まず動くものを作るこれが出来てからやることなのだ
30 :名前は開発中のものです。 :2024/02/24(土) 20:30:09.20 ID:SG1+4YcH.net >「もっと美しく書くにはどうしたら」とか いやほら、書いたコードは三日で忘れるっていうから・・(言い訳)
31 :24 :2024/02/24(土) 20:54:02.58 ID:pQc5HIwF.net >>25 色々調べてみたけど分ける分けないはまあだいたい場合による、好みによるって感じみたいですね セレステのキャラクター制御コードは5000行らしいというのを見かけて たかだか数百行で文句言ってもしょうがないなって思いました
32 :名前は開発中のものです。 :2024/02/24(土) 23:55:24.57 ID:GqYQuO/J.net コードを建て増し建築でもバグ破綻しないのはそれも一種の才能だと思う
33 :名前は開発中のものです。 :2024/02/25(日) 09:42:22.86 ID:JZ4LT6DH.net ゲームどこで売ってる? ある程度質が良くなけりゃsteamは無理だしね
34 :名前は開発中のものです。 :2024/02/25(日) 10:53:36.73 ID:JZ4LT6DH.net ドロー系の物理って簡単に作れる?
35 :名前は開発中のものです。 :2024/02/25(日) 18:25:58.84 ID:SdrgoNWx.net プレイヤーが描いた絵からメッシュを生成できればコリジョンもできるよね
36 :名前は開発中のものです。 :2024/02/25(日) 22:44:08.51 ID:C1J2BM3C.net ゲームの多重起動を防止する設定ってありますか? 設定項目が無いなら、自分で起動時にチェックすりゃいい話だけど
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 :名前は開発中のものです。 :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 :名前は開発中のものです。 :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 :名前は開発中のものです。 :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 :名前は開発中のものです。 :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 :名前は開発中のものです。 :2024/02/29(木) 12:53:46.44 ID:HPBXgIgC.net 反射や摩擦も反映して予測軌道として表示したければそうなる 実現は可能だが要素を足せば足すほどコードも複雑になる 全ての物理現象に対して予測線は必要なのか動作停止まで予測線を描くのか? 何をしたいかによるが自分なら射出方向と最初のヒットまで表示できていれば十分とする ゲームでそこまで処理している例が思いつかないが何か知っている物はあるかい? 投擲武器で反射後まで予測してるのはあった気はするが実装としてはコスト高 大抵は最初の接触点までで最後まで反射させるのは直線移動の物だと思う
52 :名前は開発中のものです。 :2024/02/29(木) 13:09:07.90 ID:HPBXgIgC.net 反射や摩擦を含んだ挙動が必要ならRigidBodyを使うと良い 予測線処理に自前演算を勧めたが最初の接触までの予測はそれで行い 実際の挙動はRigidBodyに任せるという方法も取れる 自前演算と標準の演算で結果に差がでるかもしれないが誤差で許容する どれくらいの精度が必要か開発コストは見合っているかの判断が要求される
53 :名前は開発中のものです。 :2024/02/29(木) 13:10:48.11 ID:DIGOgAn2.net ありがとうございます 反射後の予測軌道ではなくて、単にブロック崩しのような壁バウンドを作りたかったです(重力あり) 説明が悪かったです frictionの記事は見つかりました バウンドは単純にノーマルを逆にすればいいんですね コードでやるのは初めてなので
54 :名前は開発中のものです。 :2024/02/29(木) 13:14:39.43 ID:DIGOgAn2.net >>52 そっちのほうがスマートかもしれないですね
55 :名前は開発中のものです。 :2024/02/29(木) 13:18:05.73 ID:HPBXgIgC.net ブロック崩しで良いなら 反射は反転で良いし壁に角度があってもそれほど処理は複雑にならない 摩擦も壁に当たったら適当に減速で良い 厳密な物理シミュレーションする必要がなければ自分で作った物理法則で問題ない 予測軌道で最初の方向性を示すだけで良いならRigidBodyに任せるのが楽
56 :名前は開発中のものです。 :2024/02/29(木) 14:26:27.07 ID:DIGOgAn2.net https://youtu.be/D562d3qd98M?si=5RayWB3a3dH67mpb&t=22 こんな感じの物理ありのものですね 玉の動きを見ると物理っぽくない感じです
57 :名前は開発中のものです。 :2024/02/29(木) 14:26:37.93 ID:DIGOgAn2.net peglinというゲームです
58 :名前は開発中のものです。 :2024/02/29(木) 15:14:10.01 ID:HPBXgIgC.net 放物線を描いてるから重力はある物理演算だね 予測軌道は初回ヒットまででヒット後は軌跡を描いて跳ね返り表現 単純だから自前でやっても良いしRigidBodyでやっても良い RigidBodyの方が物理パラメータ色々弄るの楽だからRigidBodyを勧めるかな 今までの知識を纏められたら同じ物は作れるんじゃない?
59 :名前は開発中のものです。 :2024/02/29(木) 17:11:25.31 ID:DIGOgAn2.net どうもです じゃあ勉強がてらコードでやってみます
60 :名前は開発中のものです。 :2024/02/29(木) 17:16:30.98 ID:DIGOgAn2.net まよったらエンジンに頼らない方向で作成してみる 難しすぎて出来ないことならともかく
61 :名前は開発中のものです。 :2024/02/29(木) 20:06:33.97 ID:DIGOgAn2.net 何度もごめんなさい https://youtu.be/174vFOCbONI?si=RU6NyS9XwuCQzUUT&t=133 よくあるブロック崩しはこの動きですが、スクリプトだと勢いが徐々に減算していく動きっていうのは難しいんでしょうか。
62 :名前は開発中のものです。 :2024/02/29(木) 20:28:47.87 ID:HPBXgIgC.net 衝突時や毎フレーム速度を減少する 空気抵抗的に徐々に速度を落とすなら毎フレーム減速すれば良い コードで実現するのは難しいと思い込んでいる様に思われるが少し違う 再現したい事象はどういう式で成り立っているかの数学的知識が求められている 演算式をコード化するのは機械的作業でしかない
63 :名前は開発中のものです。 :2024/02/29(木) 20:34:52.28 ID:QQLqWhwV.net ていうか張り付けた動画に>>62 の言ってる衝突時の減衰のヒントあるよね、ちゃんとコード読もう
64 :名前は開発中のものです。 :2024/02/29(木) 20:51:41.92 ID:HPBXgIgC.net リンク再生して等速運動しかしてないなって思ってたが時間指定付いてたの気が付いてなかったわ 確かに動画内で説明してるな 今は英語判らなくても自動翻訳で日本語字幕付けられるから上手く使う癖は付けた方が良いな とは言え自分も先日どうしても判らない処理の解説が動画しかなかったので翻訳も付けて見てみたが やっぱり判らなかったので苦手意識があると内容が理解し難くなるってのはあるかもね
65 :名前は開発中のものです。 :2024/03/01(金) 12:37:24.64 ID:NSS/yx2e.net >>62 >>63 ありがとうございます 多少の数学の知識が必要になるんですかね 公式など探してみます
66 :名前は開発中のものです。 :2024/03/01(金) 13:22:36.85 ID:NSS/yx2e.net 物理エンジンもこのようにコードで制御しているのでしょうか より複雑でしょうけども
67 :名前は開発中のものです。 :2024/03/01(金) 16:40:07.75 ID:7q9U3fNz.net ゲームエンジンも物理エンジンもプログラム 昔は全部自分で作っていたものがライブラリ化されエンジンとなった 既にある同じ目的のコードを自前で書くのは無駄なのでエンジンが使われる 既にある物を自前で作るのは「車輪の再発明」と言われ忌避される事が多い しかしながら原理を知らずに使っていると様々な弊害もあるので 同じ物を作れなくともある程度の理解はあると良い エンジンが望み通りに動かないなら自分で対処する事になる 数学や物理学に対して開発者はどうあるべきかは以下の「まえがき」を読んでみて欲しい https://codezine.jp/article/detail/10873
68 :名前は開発中のものです。 :2024/03/01(金) 17:18:58.23 ID:NSS/yx2e.net >>67 上のpeglinくらいんものはコードでやってみます(*´ω`*)
69 :名前は開発中のものです。 :2024/03/01(金) 17:44:41.28 ID:WaedCGGn.net 軌道予測はgodotの物理だと予測用のオブジェクト用意した上で実際に動かして軌跡保存してみたいな手法はあるみたい? https://github.com/godotengine/godot-proposals/issues/2821#issuecomment-1941706422
70 :名前は開発中のものです。 :2024/03/01(金) 17:47:21.10 ID:NSS/yx2e.net https://www.sbcr.jp/product/4797376999/ そういえばこれを持っていたけど、このくらいの理解では足りないのかな? この本のあまり理解出来なかったけど
71 :名前は開発中のものです。 :2024/03/01(金) 18:08:03.91 ID:7q9U3fNz.net 知識は多ければ多い方が良い 無駄知識でも間違った情報でもそうだと知っていれば役に立つ事もある その本は題目を見る限りでは有用な情報なので理解できるならその方が良い 内容が難しく理解出来ないならもっと簡単な所から進めるべき 原理を理解できなくても目的通りにエンジンを使えていれば及第点 コードで目的を達成する手段があれば十分 何かあった時に自分で対処する為にそれらの知識が必要 知識が多い方が解決手段を多く選べる
72 :名前は開発中のものです。 :2024/03/01(金) 18:16:46.47 ID:7q9U3fNz.net >>69 move_and_collideを1フレーム中に連続使用するのは思いつかなかった この方法で行けそうな気はするね 自前でやると誤差が気になったのでエンジンに任せられるならその方が良いね
73 :名前は開発中のものです。 :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.......と謎の数字を返してきます。 これは何の数字ですか? 座標から角度を求めるのってどうやればいいんでしょうか?
74 :名前は開発中のものです。 :2024/03/01(金) 18:30:36.78 ID:NSS/yx2e.net >>71 ありがとう 物理なしでやります 案外、脱線しているときにアイディアでたりしますしね(*´ω`*)
75 :名前は開発中のものです。 :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)))
76 :名前は開発中のものです。 :2024/03/01(金) 18:40:34.74 ID:l95YCyF0.net >>73 2π(6.28...)が360°のラジアン(弧度法)
77 :sage :2024/03/01(金) 18:44:28.99 ID:jbulu0J9.net >>75 、76 あーラジアンでしたっけ… もともと数学苦手なうえにもう忘れてました rad_to_degって組み込み関数があるんですね 覚えておきます ありがとう
78 :名前は開発中のものです。 :2024/03/01(金) 18:47:49.94 ID:7q9U3fNz.net ちょっと回答が投げやりすぎた 座標から角度の変換はVectorクラスに便利メソッドあるからそれ使うと良いよ print(rad_to_deg(Vector2(1, 1).angle()))
79 :名前は開発中のものです。 :2024/03/02(土) 06:26:20.23 ID:fHi1iYWZ.net godotって3dオブジェクトを2dとして扱う機能はないんですよね。 unityのように
80 :名前は開発中のものです。 :2024/03/02(土) 11:35:55.96 ID:fHi1iYWZ.net エディタをフローティングにすると画面大きくて使いやすい 今まで気づかなかった(*´ω`*)、、、
81 :名前は開発中のものです。 :2024/03/02(土) 11:37:49.45 ID:fHi1iYWZ.net しかし、gptがあるとだいぶ楽だねぇ godot4には対応してないみたいだけど
82 :名前は開発中のものです。 :2024/03/02(土) 19:41:02.09 ID:2foM6lQ9.net 無いわけじゃないけど 自分の知る限りはビューポート使うか3D素材をgodot外で2Dに起こすくらいじゃないか もっと効率のいい方法があるなら自分が知りたいくらいだ じゃなきゃ最初から3Dシーンで2.5Dゲーム作るほうが早いだろうな
83 :名前は開発中のものです。 :2024/03/03(日) 02:31:35.80 ID:EG5KL4S5.net Unityは3Dオブジェクトを2Dにしてるんじゃなくて2Dを全部3D空間上に配置してて、2Dのテンプレートも内部的には全部3Dだからそういうことができてるように見せかけてるだけ
84 :名前は開発中のものです。 :2024/03/03(日) 04:50:28.56 ID:UwGRXxZo.net あの2d表示が便利だなと思うこともありますよね 3dから2d素材作るために一度画像にレンダリングしないといけないのも手間ですし
85 :名前は開発中のものです。 :2024/03/03(日) 04:55:09.45 ID:UwGRXxZo.net スキルもないしコツコツと小さいクソゲー作るしかないね
86 :名前は開発中のものです。 :2024/03/03(日) 06:30:48.29 ID:UwGRXxZo.net 他人のコードを読む能力がないわ 難しいね 他人のコードは
87 :名前は開発中のものです。 :2024/03/04(月) 14:33:40.24 ID:Y8uyU2JR.net 質問なんですが、下にあるデバッガーの位置は変更出来ないのでしょうか? 少し邪魔に感じることがあり、フローティング表示にしたいのですが
88 :名前は開発中のものです。 :2024/03/04(月) 14:39:30.96 ID:MRQbhd4x.net >>69 コードをコピペして動かしてみた 予測軌道は描けたが実際のRigidBodyの挙動とは同じにならなかったので調整は必要そう 書かれていない初期設定部分で正しく調整されているのかも知れない 物理エンジンは自分の思い通りに動かない事が多くて悩ましい
89 :名前は開発中のものです。 :2024/03/04(月) 14:47:11.25 ID:MRQbhd4x.net >>87 フローティングボタンが付いてないのだから出来ないのだろう 現在開いているタブクリックで最小化するので十分ではないのか?
90 :名前は開発中のものです。 :2024/03/04(月) 15:15:45.96 ID:Y8uyU2JR.net ありがとう 諦める 実行すると勝手に開いたりするのが煩わしいなと感じて
91 :名前は開発中のものです。 :2024/03/04(月) 15:49:14.81 ID:MRQbhd4x.net [エディタ設定][実行][出力][Always Open Output on Play]をfalseにする 変更反映はエディタ再起動後
92 :名前は開発中のものです。 :2024/03/04(月) 16:51:04.53 ID:Y8uyU2JR.net ありがとう
93 :名前は開発中のものです。 :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
94 :名前は開発中のものです。 :2024/03/04(月) 18:58:36.71 ID:maXrH/rV.net 点追加→描画→クリアじゃなくて最初にクリアしてから点を追加する様にすればいいんじゃない? それかLine2dは使わずdraw_line()で描くとか
95 :名前は開発中のものです。 :2024/03/04(月) 21:05:07.83 ID:MRQbhd4x.net ほぼ正解なのに後一考が足りないのが惜しい clear_points()が何をする命令かを理解し 処理の最後にclear_points()するとどうなるのか考えれば自明だと思うのだがな
96 :名前は開発中のものです。 :2024/03/05(火) 05:33:04.51 ID:NetOoeu2.net リファレンス見直してみます ありがとう 消し方の部分ですね
97 :名前は開発中のものです。 :2024/03/05(火) 06:35:57.44 ID:NetOoeu2.net godotってaiインテリセンスとかないのですかね? visual studioのあれは楽すぎてビビった記憶があります 先の先まで先読みしてくれるので
98 :名前は開発中のものです。 :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("描画")
99 :名前は開発中のものです。 :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においては実行順が異なる可能性がある
100 :名前は開発中のものです。 :2024/03/05(火) 14:58:24.96 ID:2jT49Fhn.net そもそもdraw_to_cursor内に描画処理は入ってない add_pointは後から_draw()で描画される事になる線を構成する点を追加するというだけ
101 :名前は開発中のものです。 :2024/03/05(火) 16:14:33.95 ID:WbtfMd0/.net >>97 vscode経由でやればできるにはできるけど gdscriptだと実用レベルのコードはほぼでないよ
102 :名前は開発中のものです。 :2024/03/06(水) 06:26:28.33 ID:0YKHfOtY.net >>99 返信遅れてごめんなさい 寝不足でずっと寝てました >>100 あっそうか、マウスクリック時にしか描画されないという点が問題だったんですね >>101 unity c#より記述量少ないからなくてもいいかもですね
103 :名前は開発中のものです。 :2024/03/06(水) 06:39:24.06 ID:xC/Ga180.net 自分は同じような内容列記するときだけ使ってるかな APIの使い方が間違ってたり、文法がおかしかったりと普段使いはむしろ邪魔
104 :名前は開発中のものです。 :2024/03/06(水) 06:45:51.37 ID:0YKHfOtY.net 放物線あと2日くらいで完成させる(*´ω`*)
105 :名前は開発中のものです。 :2024/03/06(水) 06:49:31.06 ID:0YKHfOtY.net インテリコードっていう呼び名でしたっけね
106 :名前は開発中のものです。 :2024/03/06(水) 17:57:53.24 ID:0YKHfOtY.net is_mouse_button_pressedはありますけど、 マウスにjust pressed系はないんですかな?
107 :名前は開発中のものです。 :2024/03/06(水) 18:12:02.85 ID:0YKHfOtY.net あっ、action pressのほうでやるんすね ごめんなさい(*´ω`*)
108 :名前は開発中のものです。 :2024/03/06(水) 18:15:22.40 ID:mNCkxtfo.net そもそもjust pressedはactionにしかない
109 :名前は開発中のものです。 :2024/03/07(木) 14:31:20.08 ID:pWb+fA4v.net >>105 IntelliCodeはGDScriptに対応してないね VSCodeでGDScriptを書いても無理だわ
110 :名前は開発中のものです。 :2024/03/07(木) 15:51:23.86 ID:qvtd0tl6.net 今日仕入れた豆知識 ランダムでtrueかfalseの2択を使いたい時 var random : bool = randf() > 0.5 この1行でOK
111 :名前は開発中のものです。 :2024/03/08(金) 10:20:06.16 ID:G13/EPQ6.net randiの方が早いよ
112 :名前は開発中のものです。 :2024/03/08(金) 15:09:31.48 ID:4aurAYnx.net 速度詰めるなら(randi() & 1) == 1;とか?
113 :軌道予測 :2024/03/08(金) 19:43:07.94 ID:vGL0nvHr.net 軌道予測の者です 考え方として、予測軌道を描きたい場合、軌道予測用のオブジェクトを一度投げないと、ポイントを取得出来ないのではないでしょうか? 物理を使わない場合、方角と力の値があれば、そこから事前に予測出来るのでしょうか? 方法を思いつかなかったので質問させてください >>109 ですよね(*´ω`*)
114 :名前は開発中のものです。 :2024/03/08(金) 23:32:43.87 ID:Eb0+PHr0.net >>69 >>88 の解決法が判った 予想通り初期設定が足りていなかった RigidBody2Dのcustom_integratorを有効にする事できっちり同じ挙動になった 衝突まで出来たが反射が出来てないので課題は残る
115 :名前は開発中のものです。 :2024/03/08(金) 23:52:05.37 ID:Eb0+PHr0.net >>112 に補足 速さを求めるなら==は要らない bool型に代入すると型変換で遅くなるので代入するならint型 var random:int = randi() & 1 しないなら if randi() & 1: pass だけどゲームで使う分には誤差だから判りやすい記述が良いと思う
116 :名前は開発中のものです。 :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 #座標に経過時間分の運動量を加算 リアルタイム制のゲームは座標計算→描画を繰り返し行うのが基本 前回の座標計算からの経過時間を元に計算を行う 概ね運動量に経過時間を掛ける事で求められる
117 :名前は開発中のものです。 :2024/03/09(土) 01:59:11.51 ID:TY4JoG/O.net 言い回しは運動量dじゃなく速度velocityとした方が良いかな?
118 :軌道予測 :2024/03/09(土) 06:47:06.36 ID:HzeElu7U.net 初速、方向ベクトル、力、時間の4要素がおそらく必要なんですね 運動方程式物理の本買ったんですけど、数学への抵抗感なくなればいいなぁ(*´ω`*)
119 :軌道予測 :2024/03/09(土) 11:31:15.25 ID:HzeElu7U.net Programmingの理解が遅い人って何が問題なんでしょうか 自分のことですけども 抽象化、というかイメージ化が出来てないのかも
120 :名前は開発中のものです。 :2024/03/09(土) 12:48:53.19 ID:TY4JoG/O.net 理解できないのは理解できるサイズまで対象を分解できていないから 思い描いているイメージを具体化できてない 抽象的かつ大雑把過ぎるので細かい要素に分割する 分割した要素毎に必要な知識を理解する Peglinを作りたい→軌道予測線を描きたい 線を描くとは→線分を画面に表示する 軌道予測とは→放物運動の開始から終了までの線分を描くための座標を取得する 放物運動とは→等速運動と自由落下する運動 座標の取得とは→放物運動の計算式から得られる 放物運動の計算式とは→(a)物理エンジンから取得するか(b)自前で自前で計算するかの二択 (a)物理エンジンで取得する→RigidBodyを実際に投げた結果から座標を取得する 実際に投げるには→他に影響を与えずに投げた結果を得るには特殊な手法が必要 特殊な手法とは→>>69 が提示 (b)自前で計算する→放物運動の計算式を作る 計算式を作る→線分を描くために時間経過毎の座標を取得する→>>116 で提示 要素を分解するとこんなもんか? 放物運動の計算は複雑な計算式は不要で時間経過毎に等加速と自由落下を加算するだけ 判らないなら判る所まで分解して考える
121 :軌道予測 :2024/03/09(土) 18:53:53.21 ID:HzeElu7U.net >>120 1つずつ単体テストみたいなことをやるといいんですかね?
122 :名前は開発中のものです。 :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 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.net どうも 必要な要素が把握出来てないのかもですね 線はline2dでやってみます
124 :軌道予測 :2024/03/11(月) 14:26:20.28 ID:CzcLH5L4.net gdscriptでは関数入れ子はサポートされてないんですかね?
125 :名前は開発中のものです。 :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"))
126 :軌道予測 :2024/03/12(火) 10:22:31.68 ID:6dOLlAtw.net myfnctionのプロパティー化しないと駄目ということですかね
127 :名前は開発中のものです。 :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
128 :名前は開発中のものです。 :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"))
129 :軌道予測 :2024/03/12(火) 15:08:54.31 ID:6dOLlAtw.net ありがとう 今すぐ使うわけじゃないんだけど知識として知りたかったんだ 会話に飢えてるのかも
130 :軌道予測 :2024/03/15(金) 14:19:26.75 ID:z+ILEsEI.net ペイントソフトの筆のように線を描くのは可能でしょうか? ペイントソフトってよく見ると点を打ってるんですよね line2dとそれにコリジョンつけるためのsegment shapeあたりで調べてます
131 :軌道予測 :2024/03/15(金) 14:44:55.65 ID:z+ILEsEI.net あ、描くのはすんなり行けたナリ(*´ω`*)
132 :軌道予測 :2024/03/15(金) 20:10:53.69 ID:z+ILEsEI.net https://docs.godotengine.org/ja/4.x/classes/class_segmentshape2d.html segment shapeで太さは指定出来ないっぽい となると頂点を打って、ぐるっと囲む感じでコリジョンを作るって感じなのね
133 :名前は開発中のものです。 :2024/03/15(金) 20:19:43.83 ID:v4U5bWGM.net カプセルとかの単純形状系でもいけそう
134 :軌道予測 :2024/03/16(土) 03:54:55.34 ID:ECp53ZYt.net ライン描いてそれをコリジョン化する感じ unityならアセットでサクッとできるんだけろうけど、godotだとサンプルが少ないナリ
135 :軌道予測 :2024/03/16(土) 09:40:56.08 ID:ECp53ZYt.net >>133 Q REMASTEREDとか、あれを単純図形でいけるかな? まあペイントソフトも玉のテクスチャを連続させてるだけだよね
136 :軌道予測 :2024/03/16(土) 12:06:33.95 ID:ECp53ZYt.net https://imgur.com/a/KTYggOG 単純図形をフレームごとにadd_childしてるのじゃが、一定間隔でadd_childしたとしてもつながるほど短い間隔になる保証はないのだけど、何か方法はありますかね?
137 :軌道予測 :2024/03/16(土) 12:16:39.25 ID:ECp53ZYt.net elapseTime+=delta if elapseTime >= 0.001: print("hoge") たとえばelapseTimeでこんなふうにして実行しても、フレーム以上の描画スピードにはならんわけよね(*´ω`*)
138 :名前は開発中のものです。 :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
139 :軌道予測 :2024/03/16(土) 13:13:32.53 ID:ECp53ZYt.net 多分、描いた線をコリジョン化したい場合は、ジオメトリー系を使うみたいです 今から調べます
140 :名前は開発中のものです。 :2024/03/16(土) 13:42:11.02 ID:33L2QT9a.net Qは一定間隔で円なの普通に見てわかるな >>133 でカプセルっつってんだからカプセルか間に長方形挟むでもいいと思うけど直線がダメか
141 :軌道予測 :2024/03/16(土) 14:03:51.94 ID:ECp53ZYt.net 1フレームあたり座標をずらしたものを複数個追加する方法でいけるかもね
142 :軌道予測 :2024/03/16(土) 17:55:12.95 ID:ECp53ZYt.net ↑駄目だった やっぱりカーソル早く動かすと1フレームあたりの描画量が足りなくて、点々になっちまう(*´ω`*)、、、、 ジオメトリあたり試してみるナリが、godotの場合、線を引いてそれにコリジョンをつけるには何の機能がいいの?
143 :軌道予測 :2024/03/18(月) 06:18:37.02 ID:sBH5kPda.net line2dにコリジョンつけたいんだけど、方法ある? segmentshapeで太さ出せるだろうか?
144 :名前は開発中のものです。 :2024/03/18(月) 12:34:34.92 ID:/glnBgCG.net SegmentShape2Dで太さは指定できない 厚みを持たせるなら元ネタ同様に球を並べるか二点を通るポリゴンを自分で作る 二点の中点にRectangleShape2Dを置いて傾けるという方法でも可能
145 :名前は開発中のものです。 :2024/03/18(月) 13:18:28.54 ID:/glnBgCG.net 端の処理を考えたらCaosuleShape2Dの方が綺麗にできる
146 :軌道予測 :2024/03/18(月) 13:26:05.86 ID:sBH5kPda.net rectangleshape2dだと曲線とか難しそうですね 玉連続の場合、1フレームあたりに複数個追加しないと玉が飛ぶんですが、どういうやり方があるんでしょうか。
147 :名前は開発中のものです。 :2024/03/18(月) 13:30:42.80 ID:/glnBgCG.net 使える情報は前フレームの座標と現フレームの座標 フレーム間の座標は自分で作るしかない 回答は>>138
148 :軌道予測 :2024/03/18(月) 13:40:45.88 ID:sBH5kPda.net どうも 玉手法はgptに聞いてみます 線形補間もやってみます
149 :軌道予測 :2024/03/18(月) 19:15:29.31 ID:sBH5kPda.net こういうときはunityでのやり方を調べると参考になるかもですね godotだとやはり情報が少ないっす
150 :軌道予測 :2024/03/19(火) 14:44:11.82 ID:D3Qdtv84.net https://www.youtube.com/watch?v=L3Lls9fY6s4 このゲームのラインって玉の連続と上で教えてもらったんですが、どこを見ると玉ということが分かりますか? 玉であってもコリジョンを曖昧にすればいけそうですね
151 :名前は開発中のものです。 :2024/03/19(火) 15:20:17.53 ID:n2087dMP.net 引ける線が無制限のつもりならgd_paintみたいなお絵描き機能実装してopaque_to_polygonsの方がいいかも
152 :軌道予測 :2024/03/19(火) 17:15:47.28 ID:D3Qdtv84.net 無制限とはどういうことですか? 色をポリゴン化する機能は知りませんでした
153 :名前は開発中のものです。 :2024/03/19(火) 17:55:59.32 ID:n2087dMP.net ドラッグで線を描くとして、線を引いてる間に毎フレーム線や円を追加してるとそのうちオブジェクト数がえらい事になる
154 :名前は開発中のものです。 :2024/03/19(火) 18:44:46.90 ID:hE1w1zmY.net えらい数になる前に点を間引いたり直線近似するんよね
155 :軌道予測 :2024/03/20(水) 09:55:11.93 ID:o2i+3Cka.net 球が増えすぎると重くなるとしたら、ラインのながさを制限するなりしないとだめってことですよね それもゲーム性にすりゃいいかもです
156 :軌道予測 :2024/03/20(水) 09:55:52.73 ID:o2i+3Cka.net 点の連続で線を描くというのは一般的な方法なんでしょうか。 点が飛ぶのは、lerpでどうにか補完できないか考えてます
157 :軌道予測 :2024/03/21(木) 11:09:56.75 ID:IgSPnTWH.net godotで3dゲーム作るのはあり? お遊びだけどさ
158 :軌道予測 :2024/03/21(木) 13:13:49.23 ID:IgSPnTWH.net やっぱホワイトボックスレベルでも3d作るのは大変だと感じるナリ
159 :名前は開発中のものです。 :2024/03/21(木) 16:40:50.08 ID:XmwxGLbE.net Godotで3Dゲームを作るのが無しだったら>>1 の作例は無いだろう 3Dの方が要求知識が増えるので簡単とは言わないが苦手意識が強すぎる様に思う 3Dでもカメラを固定して一軸を全く使わなければ2Dとほぼ同じ扱いになる 3Dを使ったエフェクトが使いやすくなるのでメリットもある
160 :軌道予測 :2024/03/21(木) 18:06:43.28 ID:IgSPnTWH.net まあね 完成させられないで失敗しかしてないから
161 :名前は開発中のものです。 :2024/03/21(木) 23:24:33.92 ID:XmwxGLbE.net 少なくとも自分で調べたり聞いた結果 線の引き方は覚えたし内容は理解しきれなくとも線形補完という手法も知った 以前と比べれば何かした分は成長している how-toを聞いただけで理解して使いこなせたら秀才 使いこなせないのは知識も経験も足りないからで功を焦りすぎ
162 :名前は開発中のものです。 :2024/03/21(木) 23:30:23.01 ID:XmwxGLbE.net 点と点の間の線を引く際に不足する点を補完する方法が線形補完 線を引く上では一般的と言えるがゲームでの利用においては制限があるのは指摘されている通り 制限が問題になるなら対策を打つなり別方法を使用する事になる
163 :軌道予測 :2024/03/22(金) 14:16:19.70 ID:jsxrvFIK.net コツコツやってきます 興味が長続きしないので解決しなくても課題は定期的に変えますが、、、それが問題
164 :軌道予測 :2024/03/22(金) 20:17:17.38 ID:jsxrvFIK.net godotのコードサンプルってどこで手に入りますか? kids can codeはたまに見ますが
165 :名前は開発中のものです。 :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/
166 :軌道予測 :2024/03/23(土) 10:59:33.56 ID:apw+jUEF.net geometry2dってポリゴン2dみたいにポリゴンを描くクラスと考えていいんでしょうか まだ使い方が分かってない ただ、シングルトンではあるみたいです >>165 ありがとう
167 :軌道予測 :2024/03/23(土) 11:40:20.63 ID:apw+jUEF.net geometry2d自体は頂点を生成するだけで、ポリゴンはcollisionpolygon使うみたいですね
168 :名前は開発中のものです。 :2024/03/23(土) 13:42:14.97 ID:uy0YEbAb.net 3dのローポリ作品多いけど、リアルにしたらエンジン的にキツいんかな?
169 :名前は開発中のものです。 :2024/03/23(土) 14:40:47.81 ID:OOg18fNS.net ハイポリモデルを使うのがキツイのはエンジンじゃなくてマンパワーでしょ
170 :軌道予測 :2024/03/23(土) 18:16:55.69 ID:apw+jUEF.net 最新のgptは有料じゃないと使えないのかな godot4についてはデータベースがないみたい copilot使ってみるけど、他におすすめある?
171 :軌道予測 :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
172 :名前は開発中のものです。 :2024/03/23(土) 23:13:23.43 ID:uy0YEbAb.net C#で書いてたらだんだん損した気分になってきた…
173 :名前は開発中のものです。 :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:ポリゴンの加工、評価の為の便利関数群
174 :名前は開発中のものです。 :2024/03/24(日) 06:18:11.73 ID:NBGeRgaU.net >>172 前に色々調べたときgodotでC#つかうとC#部分は速いけど本体APIとのやりとり部分でオーバーヘッドが生じやすく トータルでみると結局全部GDスクリプトで書くほうが速いみたいな話を読んだ記憶
175 :軌道予測 :2024/03/24(日) 06:25:14.14 ID:o0STPUVA.net >>172 厳密すぎて疲れるっていうかね、、、 >>173 geometry2dは位置を作るだけですね、理解 ありがとう
176 :軌道予測 :2024/03/24(日) 10:42:59.23 ID:o0STPUVA.net なんやcopilot普通に使えるやん マイクロソフトだからなんか微妙なイメージ持ってたわ
177 :名前は開発中のものです。 :2024/03/24(日) 16:34:42.38 ID:30RJWthY.net 使えるは使えるけど、全体の設計とか関数の仕様理解してないと出鱈目なもの作っちゃうな 何でもよしなに作ってもらえるものじゃない
178 :軌道予測 :2024/03/24(日) 17:12:56.64 ID:o0STPUVA.net まあ質問の仕方っすね
179 :軌道予測 :2024/03/24(日) 19:25:47.06 ID:o0STPUVA.net line2dで描いた線をリジッドボディ化する方法ってありますか? コリジョンをつける件は解決したのですが、ノードの構成をどうすればいいかなと ↓ライン2dをリジッドボディにするには以下のノード構成にする必要があります ノード1 ■rigidbody2d ├line2d └collisionPolygon2 描く用のline2dノードは別にあって、そこにスクリプトをつけます。 描き終わった時点で物理をつけて、落下させるという処理をしたいです。 ノード2 ■line2d_drawing(描画処理を行うノード) ノード2で描画を行ってから、別シーンにしたノード1に描かれたラインとコリジョンの情報を渡すような流れでしょうか 簡単なプログラムをかけても、こういう、流れ?フローの設計がかなり苦手(*´ω`*)
180 :軌道予測 :2024/03/24(日) 19:26:54.19 ID:o0STPUVA.net 訂正:ノード2で描画を行ってから、別シーンにしたノード1をadd_childし、描かれたラインとコリジョンの情報を渡すような流れでしょうか
181 :名前は開発中のものです。 :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:物体の接触判定に使う
182 :軌道予測 :2024/03/25(月) 07:32:49.38 ID:SFtNN9tG.net >>181 別にしなくていいんですね line2dで描いたものの頂点をgeometry2dのoffset_polylineで取得して、その頂点をpolygon2dで再描画すりゃいいんですね ありがとう
183 :軌道予測 :2024/03/25(月) 08:27:58.80 ID:SFtNN9tG.net polygon2dってコリジョンつけるクラスだと思ってたナリ(*´ω`*)
184 :軌道予測 :2024/03/25(月) 14:16:15.68 ID:SFtNN9tG.net 1つのファイルに何行くらいコード書きます? 文字数増えると訳わからんくなるけど、対策とかないのかな 自分で1日前書いたコードが若わかめになる
185 :軌道予測 :2024/03/25(月) 14:38:30.56 ID:SFtNN9tG.net godotって変数のアウトライナーってないのかな?
186 :軌道予測 :2024/03/25(月) 18:03:15.07 ID:SFtNN9tG.net ど忘れしたんだけども、インスタンス化したシーンから、そのシーンの変数にアクセスできないのって普通なんだっけ? オートロードかグローバル変数にでもしない限りは。
187 :名前は開発中のものです。 :2024/03/25(月) 22:34:21.53 ID:qPdwNxZG.net 「インスタンス化したシーンから、そのシーンの変数にアクセスできない」のは普通ではない 指示代名詞は誤解の元だからできるだけ使用は避けるべきだと思う 「その」が親のシーンを指しているのならば子インスタンスからはownerプロパティで参照できる
188 :軌道予測 :2024/03/26(火) 06:21:35.33 ID:UiMW4uHO.net >>187 通常はインスタンス化するだけでグローバル化もなしに、アクセス出来るものですか? 試したらできましたが、できないパターンもあり、違いがよくわからないところです
189 :名前は開発中のものです。 :2024/03/26(火) 09:55:23.93 ID:RAozxNLR.net せめてそのできないパターンのソースを示せよ
190 :軌道予測 :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
191 :軌道予測 :2024/03/26(火) 12:42:11.47 ID:UiMW4uHO.net あーそうか シングルトン的な観点で駄目なのかこれは
192 :名前は開発中のものです。 :2024/03/26(火) 16:26:55.68 ID:KPzoI6q7.net 描画するノードをオートロードに配置する設計に問題はあると思うが そのコードはエラー無く動いたのでオートロードだからエラーになる訳ではないな それはそれとして子ノードを参照する変数は宣言と初期化を纏めると 総行数が減って、_ready()以外でも自動補完も効くようになってお得 @onready var polygon2d_node := $Polygon2D @onready var collisionPolygon_node := $CollisionPolygon2D
193 :軌道予測 :2024/03/26(火) 16:34:45.75 ID:UiMW4uHO.net ありがとう 原因は良くわからないけど、オートロードはなるべく使わずに作っていきます
194 :軌道予測 :2024/03/27(水) 06:23:02.67 ID:E2lXw+Px.net 別シーンのready内で下位ノードを取得している場合、 呼び出す側のシーンにアタッチされた時点で、別シーンのreadyが実行されるから、アタッチされる前に下位ノードを取得しようとするとnullになるんすね(*´ω`*)
195 :軌道予測 :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")
196 :名前は開発中のものです。 :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である必要はあるのか
197 :名前は開発中のものです。 :2024/03/27(水) 07:48:17.73 ID:AFLeB0Kj.net Mirrorってなんぞ
198 :名前は開発中のものです。 :2024/03/27(水) 07:56:43.05 ID:asE13Xlz.net GodotEngineにラッパーライブラリ被せて簡単に扱えるようにしましたって感じかね? 何かあったら一大事になるから覚える価値あるかは疑問 GodotEngineで十分足りてると思う
199 :名前は開発中のものです。 :2024/03/27(水) 08:13:45.74 ID:asE13Xlz.net とりあえずダウンロードして動かしてみたが4.3の改造版らしいが何が違うのかわからん ロードマップらしい https://github.com/orgs/the-mirror-gdp/projects/7 なんもできとらんのでは?スタートアップ投資目的か?
200 :名前は開発中のものです。 :2024/03/27(水) 09:17:27.54 ID:s0lKVFz1.net 最近こういう感じの詐欺まがいのプロジェクト多いな 話題さえかっさらえばあとどうでもなるSNSファースト社会の弊害だな
201 :名前は開発中のものです。 :2024/03/27(水) 09:34:32.48 ID:njswSuTs.net ノードの自動読み込みとノードのシングルトンって使い分けたほうがいい? 郷に入ってはの精神でなんとなく自動読み込みの方使ってるけど
202 :名前は開発中のものです。 :2024/03/27(水) 10:09:54.95 ID:gGONJtOf.net >>199 色々追加はされているがまだ始まったばかりやな 最初のコミットは3/15だしそんなもんやろ
203 :軌道予測 :2024/03/27(水) 10:16:36.57 ID:E2lXw+Px.net >>196 呼び出す側でget_nodeするんですね シーンに追加されないと子のreadyも実行されないのかなと
204 :軌道予測 :2024/03/27(水) 11:36:51.00 ID:E2lXw+Px.net godotエディター上で手書きでステージを描いて行く手法とありますかね? カーソルでポリゴン編集でもいいんですが
205 :軌道予測 :2024/03/27(水) 11:54:27.12 ID:E2lXw+Px.net https://store.steampowered.com/app/2620500/imomushi/ こんな感じのステージです タイルマップでも難しそうだし、手書きですよね
206 :軌道予測 :2024/03/27(水) 13:43:40.07 ID:E2lXw+Px.net 普通にポリゴン2dでコチコチ打てるやん ありがとう!!
207 :軌道予測 :2024/03/27(水) 15:26:01.61 ID:E2lXw+Px.net あっ、でも打てないことがある 仕組みが良く分からん
208 :軌道予測 :2024/03/27(水) 17:03:39.52 ID:E2lXw+Px.net 上のバーに編集モードあったナリありがとう
209 :軌道予測 :2024/03/29(金) 08:00:09.73 ID:YYuuvBhg.net 2dステージ作るのも大変ナリね
210 :名前は開発中のものです。 :2024/03/29(金) 12:26:10.39 ID:4gUGlpzt.net >>209 専スレ立てたら? ここお前のレスで埋め尽くされてるじゃん
211 :軌道予測 :2024/03/29(金) 12:44:49.14 ID:YYuuvBhg.net いいんじゃない 書き込まないと落ちるしもともと人が少ないスレ
212 :名前は開発中のものです。 :2024/03/29(金) 13:04:54.90 ID:twd2rh/A.net なにひとつよくないが、そんなんだから雑談スレ追い出されんだよ 質問ですらない独り言とかTwitterで鍵かけてつぶやいてろ
213 :名前は開発中のものです。 :2024/03/29(金) 13:12:07.70 ID:sRPqCb6v.net >>211 いくら過疎スレでも占有はよくないよ 自分で専スレ立てれない? そっちを日記として使って、どうしても解決できない問題があるときだけここで聞けばいいよ
214 :名前は開発中のものです。 :2024/03/29(金) 13:19:13.92 ID:YYuuvBhg.net じゃあ君等が落ちないようにしてね
215 :名前は開発中のものです。 :2024/03/29(金) 13:21:25.50 ID:18de9J88.net dat落ちの条件理解してなさそうだし、適当な事言うのは辞めた方がいい 何か勘違いしてないか?
216 :名前は開発中のものです。 :2024/03/29(金) 13:38:45.51 ID:sRPqCb6v.net >>214 立てたよ こっち自由に使ってくれ 俺も使う予定 ゲーム制作の日記、備忘録、メモなど好きに呟くスレ https://mevius.5ch.net/test/read.cgi/gamedev/1711686911/
217 :名前は開発中のものです。 :2024/03/29(金) 14:40:51.42 ID:YYuuvBhg.net 荒れるから素直に謝っておくか 不快にさせてすみません
218 :名前は開発中のものです。 :2024/03/29(金) 15:42:09.03 ID:s+Iwx5M0.net >>210-218 個人粘着でスレの進行妨害するのやめてくれないか? 無駄レスも多いが制作に絡んだ話はしている 自治厨始める奴の方が邪魔 無駄レスが気に入らないなら会話になるGodotの話題を出してくれ
219 :名前は開発中のものです。 :2024/03/29(金) 15:46:26.16 ID:2tYAETUL.net godot4.0になった辺りで触らなくなったんだがもう4.3まで伸びてんのな 4.1~4.3でなんか目玉機能追加された?
220 :名前は開発中のものです。 :2024/03/29(金) 16:43:00.72 ID:18de9J88.net そもそも過疎板にはDat落ち判定はないんだが(nKB未満が即死する即死判定はある) 頓珍漢な言い訳はやめなさいと言っただけだぞ
221 :名前は開発中のものです。 :2024/03/29(金) 17:26:29.20 ID:nuxfBRdB.net 圧縮で落ちるのが最終更新なら2018年とかのが残ってるから確かに当分は大丈夫そうだな
222 :名前は開発中のものです。 :2024/03/29(金) 17:47:38.73 ID:imN+3EnT.net 3Dファイルはgltf一択? Blender連携はテクスチャ周りが上手くいかん
223 :名前は開発中のものです。 :2024/03/29(金) 17:56:09.05 ID:YYuuvBhg.net >>222 fbxはライセンスの関係で使えないんじゃなかった? 今どうなってるか分からん 3dやってないし
224 :名前は開発中のものです。 :2024/03/29(金) 18:36:00.41 ID:eapD4MOf.net 数日放置してたら案の定もめてて草 正直異様でスレ見る気も失せる状態だったし >>218 もいちいち絡んでちゃ自治厨と大差ない しょーもな
225 :名前は開発中のものです。 :2024/03/29(金) 21:52:57.37 ID:PtR313Sj.net オマエモナー
226 :名前は開発中のものです。 :2024/03/29(金) 23:38:18.95 ID:imN+3EnT.net 日本語でgodot関連調べてると大抵同じ人の記事にたどり着く…何者なんだ…
227 :名前は開発中のものです。 :2024/03/30(土) 15:36:35.50 ID:8Or9Js4W.net >>224 これ 変な拘りで自治が自治が言ってる時点で自治してるようなもんだし 5chなんだから気に入らなきゃ別スレでも立てて好きにやりゃ良いのに
228 :名前は開発中のものです。 :2024/03/30(土) 23:48:04.78 ID:uJH0yGQv.net オマエモナー
229 :名前は開発中のものです。 :2024/04/01(月) 06:44:36.40 ID:bnl1SBKq.net マリオみたいな2dアクションってタイルマップ使わずに作るのはあり? タイルマップないと調整が難しいんじゃないかな ジャンプ力3とした場合、谷をタイル3つぶんにすればギリギリ届く、といった調整が簡単
230 :名前は開発中のものです。 :2024/04/01(月) 08:02:59.00 ID:PL23FYq5.net >>229 最近のゲームではNoitaが地形全部ピクセルかなと思います 今はCPUやRAMが潤沢なので十分ありなのでは
231 :名前は開発中のものです。 :2024/04/01(月) 12:52:37.52 ID:bnl1SBKq.net jumpkingみたいな感じのを作りたい あれはタイルマップ感はないけど、タイルマップではないにしてもグリッドをベースにしたほうが楽そう
232 :名前は開発中のものです。 :2024/04/01(月) 13:15:59.82 ID:vOJskMGJ.net godotはグリッドにスナップできるし jumpking程度ならコリジョン付けて配置してくだけで行けると思うよ
233 :名前は開発中のものです。 :2024/04/01(月) 17:11:07.39 ID:bnl1SBKq.net サイトでもグリッドデザインとかあるしね
234 :名前は開発中のものです。 :2024/04/01(月) 19:23:56.08 ID:bnl1SBKq.net https://youtu.be/CNhscDwBGQ0?si=DO2b2Dbeb-f9BhFF&t=836 この画面中央にある浮島みたいな複雑な形状もタイルマップなのかな?
235 :名前は開発中のものです。 :2024/04/01(月) 19:35:50.50 ID:Qv7VTYs7.net JKは地形の最小単位自体は見える気がするし単に細かめのタイルマップで再現できるのはできるんじゃね modの作り方見た感じ判定はRGB画像をタイルマップみたく扱ってて見た目は一枚絵被せてるらしい
236 :名前は開発中のものです。 :2024/04/01(月) 20:13:46.87 ID:bnl1SBKq.net タイルマップ研究してみる 機能じゃなくてデザインから作る試みをしてるから 被せるというのは、つまりタイルマップでマスキング(くり抜き)してる感じかな?
237 :名前は開発中のものです。 :2024/04/01(月) 21:28:39.74 ID:Qv7VTYs7.net RGB画像は1画面辺り60×45とかの荒いやつだから違う ゲームデザイン(判定、地形)だけタイルマップ式でそれに合わせた画像を別で用意してるってこと これ貼るのが早いか ttps://jumpkingplus.github.io/workshop/docs/modding/hitboxes/ ttps://jumpkingplus.github.io/workshop/docs/modding/screens/
238 :名前は開発中のものです。 :2024/04/02(火) 06:38:50.57 ID:gq8N0/8x.net >>237 ん?一枚絵を重ねる感じ?
239 :名前は開発中のものです。 :2024/04/03(水) 19:26:17.38 ID:BKl8fFHu.net 慣れてないとタイルマップでステージ作るの難しいね
240 :名前は開発中のものです。 :2024/04/04(木) 18:23:04.76 ID:Yk95TemJ.net タイルマップエディタの位置って変更出来る? 下のスペースだと作業しづらくてしゃあない
241 :名前は開発中のものです。 :2024/04/05(金) 02:45:26.77 ID:Pqxpfu1i.net CollisionLayerやVisibilityLayerのレイヤー名適当に付けてきたから並び替えしたいけど面倒だなー かといってスクリプトで管理するのも面倒
242 :名前は開発中のものです。 :2024/04/05(金) 06:47:12.42 ID:VPXaZ05P.net タイルマップのアルファ部分を境界線として自動的にコリジョンつける機能あったっけ?
243 :名前は開発中のものです。 :2024/04/07(日) 10:10:16.82 ID:XQBKHWlL.net 1つのゲーム何ヶ月くらいかける? そんな大作は作れないから数週間程度にしとくといいのかなと思うが
244 :名前は開発中のものです。 :2024/04/07(日) 12:40:54.04 ID:B7MxZFEN.net 初めて作るなら二週間くらいで作れそうなのにした方が早めに世に出せていいと思う 製作期間なんてどうせ伸びるし
245 :名前は開発中のものです。 :2024/04/07(日) 14:24:50.23 ID:XQBKHWlL.net ありがとう 想定の2倍以上はかかる 確かに
246 :名前は開発中のものです。 :2024/04/07(日) 20:10:06.18 ID:XQBKHWlL.net 2dアクションのステージ作るときにタイルセットじゃなくて、ポリゴンノードを1枚のタイルとして大量に並べていったらパフォーマンスにかなり影響出るのかな? 数千とかそういうレベルになったら
247 :名前は開発中のものです。 :2024/04/08(月) 00:34:30.27 ID:BT1LWWM9.net 余裕で出るだろうねぇ Godotがすごすぎエンジンで問題なかったら逆にビックリするけど
248 :名前は開発中のものです。 :2024/04/08(月) 05:26:25.44 ID:EcmamLs3.net どうも 出るか、、、 ポリゴンノードの羅列のほうが柔軟に形状変えられていいかなと思ったけど、タイルマップでやる タイルマップは形状にどうしても制限が出るから
249 :名前は開発中のものです。 :2024/04/08(月) 13:22:19.11 ID:BT1LWWM9.net 性能テストだと思って実際に作って負荷検証した方がプロっぽいけどな Zennとかで投稿して知見共有してくれてもいいのよ? 宣伝にもなるし あ、契約書からむような案件だったらダメだけど
250 :名前は開発中のものです。 :2024/04/08(月) 14:15:01.29 ID:EcmamLs3.net ありがとう zennってたまに見るけどブログとしていいね fc2から乗り換えよう
251 :名前は開発中のものです。 :2024/04/09(火) 11:56:09.63 ID:oLx3m2KZ.net https://dev.to/christinec_dev/learn-godot-4-by-making-a-2d-platformer-part-4-level-creation-1-4obb オートタイルはterrain使ってやる感じ? 今学習中 スクリプト無しで出来るならいいけど この解説生地を書こう
252 :名前は開発中のものです。 :2024/04/09(火) 14:36:54.29 ID:oLx3m2KZ.net https://imgur.com/B6lPvsv オートタイルを作りたいけど、仕組みがよく理解できない terrainをペイントすることでそれっぽくなるけど、どこをどうペイントするといいのかガ分からない
253 :名前は開発中のものです。 :2024/04/13(土) 06:35:26.13 ID:DtpmdlV4.net https://www.youtube.com/watch?v=TCEEKKeoT-0 オートタイルの動画あったけど仕組みが分からん 塗った場所によって、どのようにつながるか決まるらしいけど、どなたか教えて
254 :名前は開発中のものです。 :2024/04/13(土) 12:16:44.81 ID:4XyoFcVO.net いやこれで分からないんじゃ説明のしようがねえじゃん
255 :名前は開発中のものです。 :2024/04/13(土) 14:29:45.52 ID:2dO4J81U.net 俺の立てたスレに来たら懇切丁寧に教えてもよかったけど この顔文字くん来ないんだよな 人が多いとこに居たいんだろうけど
256 :名前は開発中のものです。 :2024/04/13(土) 15:12:12.60 ID:DtpmdlV4.net 立てたっけ?
257 :名前は開発中のものです。 :2024/04/13(土) 15:15:11.02 ID:2dO4J81U.net >>256 ここな>>216
258 :名前は開発中のものです。 :2024/04/13(土) 15:27:51.76 ID:DtpmdlV4.net 人のこと池沼とか書いてるやついるからええわ
259 :名前は開発中のものです。 :2024/04/13(土) 22:30:37.04 ID:PLTsef0l.net 自覚持てよ
260 :名前は開発中のものです。 :2024/04/14(日) 04:27:19.96 ID:xkIt8wPU.net そういうのいらないから
261 :名前は開発中のものです。 :2024/04/14(日) 14:53:38.25 ID:pt7t7Gdb.net オマエモナー
262 :名前は開発中のものです。 :2024/04/17(水) 11:03:55.56 ID:c7cp2PUr.net godot4で方向取る関数ってなんですか? input.get_axisだと引数が2つ必要になっていましたね 以前はinput.get_axis("horizontal")←これで横方向がトレていたのですが、
263 :名前は開発中のものです。 :2024/04/17(水) 11:23:02.69 ID:S9SgvMuX.net 以前とはいつの事か?またはどのバージョンの事か? 質問する前に自分の記憶が正しいかの確認をする https://docs.godotengine.org/en/3.4/classes/class_input.html 初登場時からget_axisの引数は2つ get_axisの機能を方向取る関数と認識しているのならば 引数の形式が変わっていても新しい引数の形式での使い方を理解するしかない
264 :名前は開発中のものです。 :2024/04/17(水) 11:59:17.28 ID: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) 文字列での分岐にすることにしました
265 :名前は開発中のものです。 :2024/04/17(水) 12:28:13.73 ID: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")
266 :名前は開発中のものです。 :2024/04/17(水) 14:58:45.87 ID: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
267 :名前は開発中のものです。 :2024/04/17(水) 17:28:28.38 ID:c7cp2PUr.net どうも get_vectorで方角を返すってやつですね
268 :名前は開発中のものです。 :2024/04/18(木) 11:29:20.11 ID:o06ulE3s.net godotは割とredditが賑わってるのがありがたいは むしろunityより賑わってるのが謎
269 :名前は開発中のものです。 :2024/04/19(金) 18:17:49.55 ID:611er4q0.net 配列特定の値を探したい場合、forで回して比較演算子かfindか使い分けはどうすればいいの?
270 :名前は開発中のものです。 :2024/04/19(金) 19:27:59.70 ID:6eKwksTY.net 関数の方が安全で手っ取り早い代わりに若干低速な可能性がある どれくらい差があるかは知らない 配列の中身が順番に並んでるならbsearch使うか二分探索自分で書けば速い
271 :名前は開発中のものです。 :2024/04/19(金) 19:31:58.50 ID:611er4q0.net どうも どのみち二次元だとfind使えないみたいですね
272 :名前は開発中のものです。 :2024/04/20(土) 11:57:25.68 ID:gSjSgOMM.net 一時的にスクリプトを停止出来ますか? processをdisableしてもprintはされるみたいです
273 :名前は開発中のものです。 :2024/04/21(日) 10:08:48.46 ID:YXvcVHHE.net 定型文登録って合ったっけ? 以下の4方向バージョンを登録しておきたい if Input.is_action_just_pressed("ui_up"): move()
274 :名前は開発中のものです。 :2024/04/23(火) 12:13:26.37 ID:/jRBBB4p.net 特定の関数の中でしか使わない関数ってのはどう定義すればいいの? 入れ子に出来れば関係ない場所から参照されないからいいと思うんだけど func outer(): func inner(): こんな感じの入れ子は無理っぽいからラムダってやつ使うのかな しかし、以下だとprint結果が帰ってこない extends Node2D func _ready() -> void: print(lam) var lam = func outer(num): var value = "hogehoge" return value
275 :名前は開発中のものです。 :2024/04/23(火) 12:26:20.71 ID:/jRBBB4p.net あっ、callしないと駄目なんですね
276 :名前は開発中のものです。 :2024/04/23(火) 13:00:39.54 ID:K58WhwWv.net 関数のままでは入れ子にできないからCallableとして宣言する 呼び出しは変数名で行うから関数名はなくて良い func _ready(): var innner = func(x = 1):return x * 2 prints("inner() called:", innner.call()) prints("inner(2) called:", innner.call(2))
277 :名前は開発中のものです。 :2024/04/23(火) 14:27:19.77 ID:/jRBBB4p.net どうも 入れ子で書けないのなら、普通の関数とあまり変わらない感じですね 視覚的にこう1箇所にまとめたかったんですが
278 :名前は開発中のものです。 :2024/04/23(火) 15:16:36.49 ID:K58WhwWv.net 変数に代入して使うのが馴染みないかもだが 関係ない場所からの参照ができなくなるから>>274 で求められた機能としては十分 使用する変数は大体最初に宣言するから一箇所にまとまるのでは?
279 :名前は開発中のものです。 :2024/04/23(火) 15:27:32.29 ID:K58WhwWv.net >>272 完全停止は出来ないがprocess_modeにdisableを指定した上で 動かれて困るメソッドの先頭に以下の一文でも足せば良いんじゃないかな? if process_mode == Node.PROCESS_MODE_DISABLED: return
280 :名前は開発中のものです。 :2024/04/23(火) 19:08:20.21 ID:/jRBBB4p.net >>278 関係ない場所から参照出来なくなるというのは、callが付与されることで、そのような効果があるということでしょうか? >>279 どうも disableでもおそらくreadyは動くみたいですね
281 :名前は開発中のものです。 :2024/04/23(火) 19:38:02.85 ID:K58WhwWv.net ローカルで宣言した変数のスコープはローカルという普通の話 別にCallableでの特別処理とかではない グローバルで宣言すればグローバルから扱える _readyの様な初期化処理まで動かしたくないというなら自分は設計の見直しをする 必要なときにadd_childとqueue_freeすればprocess管理する必要がないのではないか?
282 :名前は開発中のものです。 :2024/04/23(火) 19:44:45.31 ID:nRUQyvbL.net 15歳のGodot教本クラファン、あれ支援してみようかなー
283 :名前は開発中のものです。 :2024/04/23(火) 20:12:37.57 ID:SVQG4/08.net 確か達成してた気するけどああいうの上乗せ倍プッシュで支援てできるんだっけ?いいんじゃね
284 :名前は開発中のものです。 :2024/04/23(火) 20:42:58.34 ID:nRUQyvbL.net ぶっちゃけGodot全然わからんちんなんで 支援して、本貰って自分にシバキを入れたいって思いもある おっちゃんが15歳に負けたくない><
285 :名前は開発中のものです。 :2024/04/23(火) 20:49:38.67 ID:K58WhwWv.net 始めるなら早い方が良いから完成待たずに既にあるのでやってみたら? https://progsha.org/
286 :名前は開発中のものです。 :2024/04/23(火) 23:25:40.86 ID:5HqoYOxs.net 3000円で紙の本と電子本両方もらえるならむしろ安いよね 良心的なクラファンだ
287 :名前は開発中のものです。 :2024/04/24(水) 04:23:26.66 ID:oxZnmf8P.net >>281 なるほど 中で宣言するというだけですね
288 :名前は開発中のものです。 :2024/04/24(水) 20:15:21.72 ID:oxZnmf8P.net 倉庫番のロジックで分からないところがあるのでこっちで質問させてもらいます マップは二次元配列で作成します ただ、キャラクターの移動はvector2で行います 1マスの大きさが32であった場合、vector2の座標が32,0だとしたら、配列上ではarray[y0][x1]となりますよね。 こういった変換に便利な関数とかないでしょうか? やりたいことを箇条書きにすると以下です 1:vector2の座標から配列上の座標を割り出す 2:キャラクターが移動したとき、配列上のキャラクター座標を移動させる(配列上の要素2がキャラとしてます)
289 :名前は開発中のものです。 :2024/04/24(水) 20:27:18.43 ID:PzjnMMaW.net 普通に割り算して切り捨てるだけでは ものを1マス単位で動かさない前提なら1マス辺りの座標を1にして逆に見た目の方の座標を掛け算なりする方が楽
290 :名前は開発中のものです。 :2024/04/24(水) 22:41:11.22 ID:YL8z0NQ2.net 自分が便利なように関数かけばいいじゃないの
291 :名前は開発中のものです。 :2024/04/25(木) 00:19:55.34 ID:5JWtrSqN.net 昔の2Dゲーム機は基本的に背景をマップタイル(キャラクタージェネレータなどとも呼ばれる)単位で管理してたものだから、同じように仮想的なタイルを敷き詰めた画面があるものとして構造体組んで、その上でモブがタイルに沿って動く管理を考えるのがとりあえずは昔のノウハウを適用できて簡単だと思う 倉庫番はまさにそういう動き
292 :名前は開発中のものです。 :2024/04/25(木) 00:27:21.13 ID:8kKIrJCJ.net AIに聞けばええやん
293 :名前は開発中のものです。 :2024/04/25(木) 00:30:55.75 ID:5JWtrSqN.net なのでモブが動くときはpix単位の座標移動が発生するけどそれはサブルーチンとして、ゲームアルゴリズムとしてはマップ全体の座標を整数の配列で(例えば100×100とか)表して制御し、画面に表示する座標は既に言われてるように適切に係数掛け算する関数を作るのが良いと思います 倉庫番の場合、マップが広いレベルを縮小してモニタに表示したりするので、その拡大縮小表示の変換が自由にできるほうがUXが良くなるし、なんなら回転表示もしたくなるかもしれないので。
294 :名前は開発中のものです。 :2024/04/25(木) 00:33:10.60 ID:5JWtrSqN.net >>292 まあ倉庫番まんまならAIに頼めばノーコードで完成するでしょうな しかしゲームメカニクスの基礎は自分の頭で考えないと応用が効かなくなるから
295 :名前は開発中のものです。 :2024/04/25(木) 00:42:09.44 ID:7TwSlN/Q.net ちがうアプローチとしてはTileMapを使用するかな 使えるようになるまでのコストが大きいからお勧めとは言い難いが 高機能で複雑な分、理解できたら便利なクラス
296 :名前は開発中のものです。 :2024/04/25(木) 01:06:24.88 ID:/gUanyy1.net 理解できないから半年以上苦しんでるんでしょう。 もっと園児でもわかるような単純なやり方を教えてあげて
297 :名前は開発中のものです。 :2024/04/25(木) 01:08:58.36 ID:5JWtrSqN.net まんまTilemapなクラスがあったのね これなら簡単だわ勉強になりました
298 :名前は開発中のものです。 :2024/04/25(木) 06:12:26.81 ID:Esvk0j05.net >>291 キャラの動きも配列の書き換えで行って、書き換えられたら再描画というふうにしてもいいんですが これだと滑らかに動くキャラってのが作れなくなるんですよね だからチュートなどではvector2で移動させてるんだろうなと マップ座標とvector2座標の変換は必要になりますね >>289 別に特殊なクラスとか使うことないんですね
299 :名前は開発中のものです。 :2024/04/25(木) 06:27:04.46 ID:Esvk0j05.net >>293 ゲームロジックとしては配列の書き換えだけということですか? 配列の書き換え→その位置に基づいてキャラを描画、ということでしょうか
300 :名前は開発中のものです。 :2024/04/25(木) 12:30:15.39 ID:Esvk0j05.net 関数から、2つの値を返すには何使うんですか? カンマ区切りではダメだったので[1,2]こういう形にしたらいけました
301 :名前は開発中のものです。 :2024/04/25(木) 12:50:05.12 ID:Esvk0j05.net ↑2つの値を返して、二次元配列として使いたい感じです array[0][0] こんな感じです
302 :名前は開発中のものです。 :2024/04/25(木) 13:25:04.08 ID:7TwSlN/Q.net 2つの値を返す方法が[1,2]でいけたならそれで解決じゃね? var return_value = [1, 2] array[return_value[0]][return_value[1]]
303 :名前は開発中のものです。 :2024/04/25(木) 14:29:31.06 ID:ddMre8ET.net GDScriptでいいのか? Pythonっぽい言語仕様だけど実際はC++をスクリプトにしただけっぽいので Pythonで複数の値を返す時に使うTupleは使えないんだとよ 方法としては2つ、Arrayで返すかDictionaryで返す 以下はサンプルコードな ※RUNボタンで実行結果も確認できるぞ https://gd.tumeo.space/?KYDwLsB2AmDOAEA5A9tYAodBidAzArpAMbwDmwYA+gIYBOt1AnpQG7UA2+wAFAJQBc6eMPi0K+WpHgBtAIwAaeAHJAVgyA-BkASDEsUBmAHSyALAF1MOAsTIVK0AJZEwt5JDrM2nHgKEixYCVIBvJQBrYEZZJX4FZVDgACZI1U1tGNtbHUj9IwBfTAsSSjFqaEY+QW9hNlp4OmqAXisqWqZWDi4+CvgAB1pbSDBYblreTp6+sCH6aQAGY154LHhZUd7+ydo5OYX4dQ0V8fXpOK3FrMNOzqr4OxIG8iobx2dXVo8OkW7Vge4bkY+xtY3aQhMIRE5LfaA+zA2IJcG7SETIEhNIZcFndBAA
304 :名前は開発中のものです。 :2024/04/25(木) 15:44:33.49 ID:Esvk0j05.net ありがとう配列で値を返して、インデックス番号でとればいいんですね これがタプルってやつですか https://www.reddit.com/r/godot/comments/1cckdwt/how_to_return_two_value_from_function/ あと、人いねーと思っていつもの癖でマルチポストしちゃった ごめんなさい改善します
305 :名前は開発中のものです。 :2024/04/25(木) 16:12:28.75 ID:ddMre8ET.net マルチでもなんでも問題解決できりゃなんでもいいんだぞ あとTupleの話は出すべきじゃなかったな、忘れてくれ
306 :名前は開発中のものです。 :2024/04/25(木) 16:35:23.02 ID:lNMYdYSi.net 流石になんでも良くはねえよ… それぞれの場所で時間使って答えてくれてんだから
307 :名前は開発中のものです。 :2024/04/25(木) 17:07:59.94 ID:7TwSlN/Q.net 同じ質問は数日待っても解答が得られなかったらとか制限は掛けた方がいいな redittの方の解答にあるが戻り値がx,yの座標を扱うものであるならVector2を使うと読みやすくなる
308 :名前は開発中のものです。 :2024/04/25(木) 17:42:32.62 ID:ddMre8ET.net >>306 一理ある。初心者は気を遣うことを覚えるより完成させることを優先しろ、オレの先輩の言葉 >>307 配列のIndexを返したいって話だから、Vec2はオーバーキルだと思うぞ。ぶっちゃけやってることは同じだしわかりやすい方でいいんだけどさ。This is KISS.
309 :名前は開発中のものです。 :2024/04/25(木) 18:26:51.75 ID:Esvk0j05.net すまん、どちらか一方にするよ redditはそれにしても人多いねぇ
310 :名前は開発中のものです。 :2024/04/25(木) 18:43:10.78 ID:/XEpAv2m.net つーかマルチポストで聞く暇あるなら少しは勉強しろよ 初歩的な問題で詰んでるなら尚更
311 :名前は開発中のものです。 :2024/04/25(木) 20:20:30.32 ID:7TwSlN/Q.net >>308 質問のみならそうなのだが話題の元が倉庫番作るのにキャラ座標をマップ配列に変換するなのでそこまで含むと解答はこうなる func cpos_to_mpos(cpos:Vector2i, size:int = 32) -> Vector2i: return cpos / size
312 :名前は開発中のものです。 :2024/04/25(木) 21:13:31.21 ID:ddMre8ET.net おー、なるほどね! Vector2iって勝手にTrancateしてくれるんだな、勉強になったわ
313 :名前は開発中のものです。 :2024/04/26(金) 06:09:14.77 ID:1Ez+K35D.net >>311 すみません なんか自己流で複雑なやり方になってる気がする 普通はキャラ座標とマップ座標の変換はやらずに、座標を1つに統一したりするんでしょうか
314 :名前は開発中のものです。 :2024/04/26(金) 13:14:53.40 ID:yaANzBxw.net 上の人も書いてるけど倉庫番と言うことはグリッドの途中で立ち止まる事はないだろうから、それであれば32で割った盤面上の座標だけ保持して画面表示の時に32倍するなりアニメ補間すればよいのでは その方がセーブやアンドゥも楽になる
315 :名前は開発中のものです。 :2024/04/26(金) 13:46:32.39 ID:1Ez+K35D.net >>314 配列使わないということですか? 配列使わない場合、障害物の位置などを表現する場合、どうするでしょうか 二次元配列を使った場合、以下のようにマップを表現すると思います 1=壁,2=キャラ、3=動かせる箱、0=動ける範囲 [ [1,2,3,0,1], [1,0,0,0,1], [1,1,1,1,1], ] グリッドの途中で立ち止まらないというのは、32ずつグリッド移動するという意味ですよね。 1pxずつ動かしたいわけじゃないので、それはその通りです。
316 :名前は開発中のものです。 :2024/04/26(金) 13:52:06.26 ID:XXsncJVJ.net もしかしてモブはスプライト管理じゃない?
317 :名前は開発中のものです。 :2024/04/26(金) 14:35:25.85 ID:/ZFKx6UF.net >>315 倉庫番である以上オブジェクトは必ず格子状に配置し管理される それを2次元配列とみなす事ができる 配列を使わない場合は遠回りに配列があるのと同等の処理を行うだけ なぜ>>314 の説明で配列使わないという解釈になるのかが判らない 配列を使わない便利な魔法でもあると想像してないか? 配列を使わない方法があっても手間が増えて複雑になるだけだから配列が使われる 配列を使った方法で理解するのが定番
318 :名前は開発中のものです。 :2024/04/26(金) 14:55:56.89 ID:/ZFKx6UF.net >>313 昔はコンソール上で動かす前提で表示もキャラクター単位だったので 配列の要素番号と表示座標の変換は不要だった 今はウインドウアプリになって表示に座標変換は必須 ウインドウアプリの作法も覚えなきゃで同じ倉庫番の初心者講習でも 昔よりは複雑になり難易度上がってはいる
319 :名前は開発中のものです。 :2024/04/26(金) 15:42:16.89 ID:86tvu5TE.net 絵文字使ってるので表示が上手くいかなかったらごめん ゲームとしては全然足りないし完成させる所までが課題ではあるが 学習項目を配列のみに集約するとこの配列操作が理解できれば十分 func _ready(): var map = "🧱👷📦🚩🧱\n" print(map) map[3] = map[2] map[2] = map[1] map[1] = "◾" print(map)
320 :名前は開発中のものです。 :2024/04/26(金) 15:45:16.29 ID:86tvu5TE.net 二次元配列まで理解できたら上出来 func _ready(): var map = ["🧱🧱🧱", "🧱👷🧱", "🧱📦🧱", "🧱🚩🧱", "🧱🧱🧱", "\n"] for c in map: print(c) map[3][1] = map[2][1] map[2][1] = map[1][1] map[1][1] = "◾" for c in map: print(c)
321 :我のうんちは小粒(^^ :2024/04/26(金) 17:21:02.02 ID:jKYfR5nN.net 二次元配列って配列に配列入れるやつでふよね(^^ そこで詰まってるなら人に聞くよりブッコフに走ってプログラムの基礎が書いてある本買って読んだほうがいいのでは?(^^ 煽りとかいじめでいってるんじゃなくて真剣に(^^ ボッキング!(^^
322 :名前は開発中のものです。 :2024/04/26(金) 18:10:17.22 ID:1Ez+K35D.net >>317 配列でやってみます ありがとう 昔のやり方というのは、配列の座標を書き換える→画面表示を更新、といったやり方ですよね 今のように、ぬるっと動かすことが出来ないということですね
323 :名前は開発中のものです。 :2024/04/26(金) 18:28:59.68 ID:Tn7ydmJN.net >>322 今の奴ってどのサンプルの話? 存在しない物を今とか空想してんの?
324 :名前は開発中のものです。 :2024/04/27(土) 14:28:13.76 ID:RX6jyHGA.net フローチャートよりシンプルな図示方法ってないかな? やっぱりロジックを整理しておいてからコード書かないと脳みそがパンクする 可といってフローチャートは難しい
325 :名前は開発中のものです。 :2024/04/27(土) 14:39:46.99 ID:RX6jyHGA.net 擬似コードってのやってみますゆえ
326 :名前は開発中のものです。 :2024/04/27(土) 16:13:48.17 ID:b+RnbsA6.net フローチャートが難しいってどういう事
327 :名前は開発中のものです。 :2024/04/27(土) 17:08:49.43 ID:RX6jyHGA.net むずいというか、他人に説明するためのものではないので、自分だけ分かる方法でいいかなと より簡易的であればいいです フロチャは図形の使いこなしが苦手です
328 :名前は開発中のものです。 :2024/04/27(土) 22:14:59.66 ID:toVZIEFB.net >>324 plantumlが面白いかも plantuml web serverでインストール不要で試せる 検索すればフローチャートの書き方もあるっぽいので コピペして遊んでみては?
329 :名前は開発中のものです。 :2024/04/28(日) 02:33:44.79 ID:XkoBpqzr.net Godotの2Dのコンセプトは3Dを2Dに見せるやり方ではないってのだけはすぐ分かるのだけど、仮想ゲームマシン的な意味での最大スペックはどこ見ればいいのだ 実行マシンさえ強ければ、昔ながらのBG面もテキスト面もスプライト面もそれらの拡縮回転移動もカラーパレットも無制限で表示させて良い感じなのかな? 他にも昔の疑似3Dもやろうと思えば作れるのだろうけど、それには本物の3D使うよね普通の人は。
330 :名前は開発中のものです。 :2024/04/28(日) 06:15:05.24 ID:6Dc8VXuN.net 1つのスクリプトに書いてるんですが、コードが増えてきた場合、領域を分ける方法は関数以外にありますか? ただ、視覚的に分けるだけでもいいです レギオンは使えるみたいですね >>328 どうも 擬似コード的なものを視覚化するというイメージですかね
331 :名前は開発中のものです。 :2024/04/28(日) 06:42:32.33 ID:6Dc8VXuN.net コアな機能だけモジュール化なりクラス化なりしたほうがいいのかな
332 :名前は開発中のものです。 :2024/04/28(日) 09:40:08.77 ID:6Dc8VXuN.net インデントが深くなりすぎる場合、対策はあるでしょうか。 pythonで関数をカッコで表現出来るでしょうか。
333 :名前は開発中のものです。 :2024/04/28(日) 11:30:45.87 ID:KYDjUHts.net >>330-332 最初から最後までしっかり読みなさい。 大ヒットゲーム『Balatro』のコードが“力業”だとして共感呼ぶ。コードが汚くても、ゲームが完成してちゃんと動けばそれでいい - AUTOMATON https://automaton-media.com/articles/newsjp/20240424-290961/
334 :名前は開発中のものです。 :2024/04/28(日) 12:06:25.45 ID:qOnW5aMf.net >>330-332 コードの書き方は多種多様な流派があり自分にあった書き方を模索するしかない チームで開発する時はチームでルールを定める 基本的には公式に従う 安易にファイル分割すると管理が大変になる 単にソースが長いだけならregionで閉じる 全体で共通して使う機能ならグローバルなクラスに纏める 特定のクラスのみの機能なら基底クラスを作って継承する インデントが深いと思ったらそもそもの処理方式を考え直す ループの内側を関数化する ifをand,orで纏める ソースを短くする為にソースが読み難くなるのは本末転倒なので下手な対策はしない
335 :名前は開発中のものです。 :2024/04/28(日) 13:46:45.79 ID:GkEu3rtv.net 力業ねえ そうは言っても作り方のセオリーはあるんじゃないかな ユニティだけど物理ワールドでオブジェクト移動するときにポジションに1加算みたいなことしたらバグるし重いよね ベロシティにアドフォースするのがセオリーじゃん? そんな感じで、頭の悪いぐちゃぐちゃなセオリーもへったくれもないコードだと見づらいバグる重いでいいことないし ゴドーで「こういう仕組み作るときはこうやるのがベター」みたいなノウハウを集めたサイトが欲しいわ
336 :名前は開発中のものです。 :2024/04/28(日) 14:04:21.58 ID:KYDjUHts.net >>335 逆引き辞典みたいなのあるといいよね(英語のはわりとある) まあセオリーやノウハウが欲しいなら、他人のコードをたくさん読むことが近道じゃないかな
337 :名前は開発中のものです。 :2024/04/28(日) 15:15:52.67 ID:6Dc8VXuN.net >>334 どうも 自分なりに書いてみます とりあえず見た目と機能は分けます
338 :名前は開発中のものです。 :2024/04/29(月) 06:16:45.87 ID:W8KMTghQ.net シンタックスのテーマはストアにないんですかね? githubから持ってくる感じでしょうか
339 :名前は開発中のものです。 :2024/04/29(月) 14:25:37.21 ID:W8KMTghQ.net arrayをforで展開するときに、size関数は要素数ですので、例えば要素数5であった場合インデックス0から開始されますので、4までです この差が誤解を産むことがあるのですが、なにか対策はあるんでしょうか? >>338 解決 自作します
340 :名前は開発中のものです。 :2024/04/29(月) 14:53:30.83 ID:2FsCulaT.net 殆どの言語で要素番号は0から始まるから数こなして慣れるのが一番 順次処理なら要素番号を使わない操作を心がける どうしても気になるなら要素番号が1から始まる配列クラスを自前で作る
341 :名前は開発中のものです。 :2024/04/29(月) 16:52:13.85 ID:W8KMTghQ.net ありがとう 練習あるのみか イメージ力みたいなのが足りないと思う 図で考えたほうがいいのかな
342 :名前は開発中のものです。 :2024/04/29(月) 21:18:04.62 ID:n5TYyf+c.net 仕様書はちゃんと書いた方が良い
343 :名前は開発中のものです。 :2024/04/30(火) 05:44:38.46 ID:HJbDE4xz.net 仕様書はフロチャですか
344 :名前は開発中のものです。 :2024/04/30(火) 13:00:30.92 ID:qkeOAzaS.net レスがつくのは嬉しいだろうけど、Godotから話題が離れてるので自分のゲーム開発だけ話すのなら別のスレで書いて欲しい
345 :名前は開発中のものです。 :2024/04/30(火) 13:09:32.02 ID:HJbDE4xz.net そうか、了解
346 :名前は開発中のものです。 :2024/04/30(火) 14:13:24.81 ID:uAstRO41.net 一人が言ってるだけだから気にしなくていいよ 他で出せる話題でもないならここでやればいい
347 :名前は開発中のものです。 :2024/04/30(火) 14:21:24.39 ID:t9d+Ii5w.net まーた揉めるようなことを・・・学習しねえな
348 :名前は開発中のものです。 :2024/04/30(火) 14:26:04.37 ID:hVvdsoIz.net スレの運用は適切に 例外を許容しすぎると該当スレの存在意義がなくなる
349 :名前は開発中のものです。 :2024/05/01(水) 10:08:19.10 ID:ePZpzJCq.net 質問です godotで子ノードにアタッチしたスクリプトの変数にはアクセス出来るんですが、スクリプトを直接ロードして、そこからアクセスしようとするとエラーになるのはなぜでしょうか。この2つの違いが良くわかりません。 目的は長いスクリプトを複数に分けることです。
350 :名前は開発中のものです。 :2024/05/01(水) 10:27:48.27 ID:ePZpzJCq.net ↑ああそうか 一度シーンにぶら下げないとダメなんですよね godotの場合は 子ノードを作成するか autoloadにするか
351 :名前は開発中のものです。 :2024/05/01(水) 12:45:52.75 ID:ZXYQy06U.net AddChildやAutoLoadはシーンツリーに接続されていてそこ経由でのアクセスが可能 ロードしたスクリプトはシーンツリーから独立したインスタンスになるので そこから他のノードへアクセスしたいのならば他のノードへの参照を渡せばアクセス可能にはなる 個人プロジェクトだろうから好きにすれば良いが 長くなったスクリプトを短くする為に理解出来てない機能を使うのは得策では無いと自分は思う それでもどうしてもregionを使わずスクリプトを短くしたいのならば継承を使うと良い そうすれば継承元のスクリプトは継承先では見た目上隠蔽される
352 :名前は開発中のものです。 :2024/05/01(水) 14:24:41.42 ID:ePZpzJCq.net ありがとうございます シーンに適当なノードぶら下げてそこにスクリプトつけて分割することにします
353 :名前は開発中のものです。 :2024/05/02(木) 19:02:27.61 ID:UVx4JLwS.net https://www.crazygames.com/game/goober-dash goober dashおもろいよね
354 :名前は開発中のものです。 :2024/05/03(金) 01:51:43.60 ID:KMJa0hAC.net 直接loadしたスクリプトはnew()すると使えるはず
97 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者