[過去ログ] 【軽量】godot engine【無料】 part3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
255: 2024/04/13(土)14:29 ID:2dO4J81U(1/2) AAS
俺の立てたスレに来たら懇切丁寧に教えてもよかったけど
この顔文字くん来ないんだよな
人が多いとこに居たいんだろうけど
256(1): 2024/04/13(土)15:12 ID:DtpmdlV4(2/3) AAS
立てたっけ?
257: 2024/04/13(土)15:15 ID:2dO4J81U(2/2) AAS
>>256
ここな>>216
258: 2024/04/13(土)15:27 ID:DtpmdlV4(3/3) AAS
人のこと池沼とか書いてるやついるからええわ
259: 2024/04/13(土)22:30 ID:PLTsef0l(1) AAS
自覚持てよ
260: 2024/04/14(日)04:27 ID:xkIt8wPU(1) AAS
そういうのいらないから
261: 2024/04/14(日)14:53 ID:pt7t7Gdb(1) AAS
オマエモナー
262: 2024/04/17(水)11:03 ID:c7cp2PUr(1/3) AAS
godot4で方向取る関数ってなんですか?
input.get_axisだと引数が2つ必要になっていましたね
以前はinput.get_axis("horizontal")←これで横方向がトレていたのですが、
263(1): 2024/04/17(水)11:23 ID:S9SgvMuX(1/3) AAS
以前とはいつの事か?またはどのバージョンの事か?
質問する前に自分の記憶が正しいかの確認をする
外部リンク[html]:docs.godotengine.org
初登場時からget_axisの引数は2つ
get_axisの機能を方向取る関数と認識しているのならば
引数の形式が変わっていても新しい引数の形式での使い方を理解するしかない
264: 2024/04/17(水)11:59 ID:c7cp2PUr(2/3) AAS
>>263
そうでしたか
なにかの記憶違いだったかもしれないです
var direction
if Input.is_action_just_pressed("ui_right"):
direction = "right"
if Input.is_action_just_pressed("ui_left"):
省7
265: 2024/04/17(水)12:28 ID:S9SgvMuX(2/3) AAS
なんとなくの予想だがUnityのInputSystem辺りと記憶が混ざってるのかもね
理解できず動かない簡潔なコードよりも理解できて正しく動く冗長なコードが勝るが
get_axisとget_vectorは有用なので使い方は理解できた方が良い
余裕があれば挑戦してみて欲しい
公式のサンプルでは大体こんな感じで使われている
# 左右をfloatで取得
var movement = get_axis("ui_left", "ui_right")
省2
266: 2024/04/17(水)14:58 ID:S9SgvMuX(3/3) AAS
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軸正方向)
省6
267: 2024/04/17(水)17:28 ID:c7cp2PUr(3/3) AAS
どうも
get_vectorで方角を返すってやつですね
268: 2024/04/18(木)11:29 ID:o06ulE3s(1) AAS
godotは割とredditが賑わってるのがありがたいは
むしろunityより賑わってるのが謎
269: 2024/04/19(金)18:17 ID:611er4q0(1/2) AAS
配列特定の値を探したい場合、forで回して比較演算子かfindか使い分けはどうすればいいの?
270: 2024/04/19(金)19:27 ID:6eKwksTY(1) AAS
関数の方が安全で手っ取り早い代わりに若干低速な可能性がある どれくらい差があるかは知らない
配列の中身が順番に並んでるならbsearch使うか二分探索自分で書けば速い
271: 2024/04/19(金)19:31 ID:611er4q0(2/2) AAS
どうも
どのみち二次元だとfind使えないみたいですね
272(1): 2024/04/20(土)11:57 ID:gSjSgOMM(1) AAS
一時的にスクリプトを停止出来ますか?
processをdisableしてもprintはされるみたいです
273: 2024/04/21(日)10:08 ID:YXvcVHHE(1) AAS
定型文登録って合ったっけ?
以下の4方向バージョンを登録しておきたい
if Input.is_action_just_pressed("ui_up"):
move()
274(1): 2024/04/23(火)12:13 ID:/jRBBB4p(1/4) AAS
特定の関数の中でしか使わない関数ってのはどう定義すればいいの?
入れ子に出来れば関係ない場所から参照されないからいいと思うんだけど
func outer():
func inner():
こんな感じの入れ子は無理っぽいからラムダってやつ使うのかな
しかし、以下だとprint結果が帰ってこない
extends Node2D
省5
275: 2024/04/23(火)12:26 ID:/jRBBB4p(2/4) AAS
あっ、callしないと駄目なんですね
276: 2024/04/23(火)13:00 ID:K58WhwWv(1/5) AAS
関数のままでは入れ子にできないから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 ID:/jRBBB4p(3/4) AAS
どうも
入れ子で書けないのなら、普通の関数とあまり変わらない感じですね
視覚的にこう1箇所にまとめたかったんですが
278(1): 2024/04/23(火)15:16 ID:K58WhwWv(2/5) AAS
変数に代入して使うのが馴染みないかもだが
関係ない場所からの参照ができなくなるから>>274で求められた機能としては十分
使用する変数は大体最初に宣言するから一箇所にまとまるのでは?
279(1): 2024/04/23(火)15:27 ID:K58WhwWv(3/5) AAS
>>272
完全停止は出来ないがprocess_modeにdisableを指定した上で
動かれて困るメソッドの先頭に以下の一文でも足せば良いんじゃないかな?
if process_mode == Node.PROCESS_MODE_DISABLED: return
280: 2024/04/23(火)19:08 ID:/jRBBB4p(4/4) AAS
>>278
関係ない場所から参照出来なくなるというのは、callが付与されることで、そのような効果があるということでしょうか?
>>279
どうも
disableでもおそらくreadyは動くみたいですね
281(1): 2024/04/23(火)19:38 ID:K58WhwWv(4/5) AAS
ローカルで宣言した変数のスコープはローカルという普通の話
別にCallableでの特別処理とかではない
グローバルで宣言すればグローバルから扱える
_readyの様な初期化処理まで動かしたくないというなら自分は設計の見直しをする
必要なときにadd_childとqueue_freeすればprocess管理する必要がないのではないか?
282: 2024/04/23(火)19:44 ID:nRUQyvbL(1/2) AAS
15歳のGodot教本クラファン、あれ支援してみようかなー
283: 2024/04/23(火)20:12 ID:SVQG4/08(1) AAS
確か達成してた気するけどああいうの上乗せ倍プッシュで支援てできるんだっけ?いいんじゃね
284: 2024/04/23(火)20:42 ID:nRUQyvbL(2/2) AAS
ぶっちゃけGodot全然わからんちんなんで
支援して、本貰って自分にシバキを入れたいって思いもある
おっちゃんが15歳に負けたくない><
285: 2024/04/23(火)20:49 ID:K58WhwWv(5/5) AAS
始めるなら早い方が良いから完成待たずに既にあるのでやってみたら?
外部リンク:progsha.org
286: 2024/04/23(火)23:25 ID:5HqoYOxs(1) AAS
3000円で紙の本と電子本両方もらえるならむしろ安いよね
良心的なクラファンだ
287: 2024/04/24(水)04:23 ID:oxZnmf8P(1/2) AAS
>>281
なるほど 中で宣言するというだけですね
288: 2024/04/24(水)20:15 ID:oxZnmf8P(2/2) AAS
倉庫番のロジックで分からないところがあるのでこっちで質問させてもらいます
マップは二次元配列で作成します
ただ、キャラクターの移動はvector2で行います
1マスの大きさが32であった場合、vector2の座標が32,0だとしたら、配列上ではarray[y0][x1]となりますよね。
こういった変換に便利な関数とかないでしょうか?
やりたいことを箇条書きにすると以下です
1:vector2の座標から配列上の座標を割り出す
省1
289(1): 2024/04/24(水)20:27 ID:PzjnMMaW(1) AAS
普通に割り算して切り捨てるだけでは
ものを1マス単位で動かさない前提なら1マス辺りの座標を1にして逆に見た目の方の座標を掛け算なりする方が楽
290: 2024/04/24(水)22:41 ID:YL8z0NQ2(1) AAS
自分が便利なように関数かけばいいじゃないの
291(1): 2024/04/25(木)00:19 ID:5JWtrSqN(1/4) AAS
昔の2Dゲーム機は基本的に背景をマップタイル(キャラクタージェネレータなどとも呼ばれる)単位で管理してたものだから、同じように仮想的なタイルを敷き詰めた画面があるものとして構造体組んで、その上でモブがタイルに沿って動く管理を考えるのがとりあえずは昔のノウハウを適用できて簡単だと思う
倉庫番はまさにそういう動き
292(1): 2024/04/25(木)00:27 ID:8kKIrJCJ(1) AAS
AIに聞けばええやん
293(1): 2024/04/25(木)00:30 ID:5JWtrSqN(2/4) AAS
なのでモブが動くときはpix単位の座標移動が発生するけどそれはサブルーチンとして、ゲームアルゴリズムとしてはマップ全体の座標を整数の配列で(例えば100×100とか)表して制御し、画面に表示する座標は既に言われてるように適切に係数掛け算する関数を作るのが良いと思います
倉庫番の場合、マップが広いレベルを縮小してモニタに表示したりするので、その拡大縮小表示の変換が自由にできるほうがUXが良くなるし、なんなら回転表示もしたくなるかもしれないので。
294: 2024/04/25(木)00:33 ID:5JWtrSqN(3/4) AAS
>>292
まあ倉庫番まんまならAIに頼めばノーコードで完成するでしょうな
しかしゲームメカニクスの基礎は自分の頭で考えないと応用が効かなくなるから
295: 2024/04/25(木)00:42 ID:7TwSlN/Q(1/4) AAS
ちがうアプローチとしてはTileMapを使用するかな
使えるようになるまでのコストが大きいからお勧めとは言い難いが
高機能で複雑な分、理解できたら便利なクラス
296: [SAGE] 2024/04/25(木)01:06 ID:/gUanyy1(1) AAS
理解できないから半年以上苦しんでるんでしょう。
もっと園児でもわかるような単純なやり方を教えてあげて
297: 2024/04/25(木)01:08 ID:5JWtrSqN(4/4) AAS
まんまTilemapなクラスがあったのね
これなら簡単だわ勉強になりました
298: 2024/04/25(木)06:12 ID:Esvk0j05(1/6) AAS
>>291
キャラの動きも配列の書き換えで行って、書き換えられたら再描画というふうにしてもいいんですが
これだと滑らかに動くキャラってのが作れなくなるんですよね
だからチュートなどではvector2で移動させてるんだろうなと
マップ座標とvector2座標の変換は必要になりますね
>>289
別に特殊なクラスとか使うことないんですね
299: 2024/04/25(木)06:27 ID:Esvk0j05(2/6) AAS
>>293
ゲームロジックとしては配列の書き換えだけということですか?
配列の書き換え→その位置に基づいてキャラを描画、ということでしょうか
300: 2024/04/25(木)12:30 ID:Esvk0j05(3/6) AAS
関数から、2つの値を返すには何使うんですか?
カンマ区切りではダメだったので[1,2]こういう形にしたらいけました
301: 2024/04/25(木)12:50 ID:Esvk0j05(4/6) AAS
↑2つの値を返して、二次元配列として使いたい感じです
array[0][0]
こんな感じです
302: 2024/04/25(木)13:25 ID:7TwSlN/Q(2/4) AAS
2つの値を返す方法が[1,2]でいけたならそれで解決じゃね?
var return_value = [1, 2]
array[return_value[0]][return_value[1]]
303: 2024/04/25(木)14:29 ID:ddMre8ET(1/4) AAS
GDScriptでいいのか?
Pythonっぽい言語仕様だけど実際はC++をスクリプトにしただけっぽいので
Pythonで複数の値を返す時に使うTupleは使えないんだとよ
方法としては2つ、Arrayで返すかDictionaryで返す
以下はサンプルコードな ※RUNボタンで実行結果も確認できるぞ
外部リンク:gd.tumeo.space
304: 2024/04/25(木)15:44 ID:Esvk0j05(5/6) AAS
ありがとう配列で値を返して、インデックス番号でとればいいんですね
これがタプルってやつですか
外部リンク:www.reddit.com
あと、人いねーと思っていつもの癖でマルチポストしちゃった
ごめんなさい改善します
305: 2024/04/25(木)16:12 ID:ddMre8ET(2/4) AAS
マルチでもなんでも問題解決できりゃなんでもいいんだぞ
あとTupleの話は出すべきじゃなかったな、忘れてくれ
306(1): 2024/04/25(木)16:35 ID:lNMYdYSi(1) AAS
流石になんでも良くはねえよ…
それぞれの場所で時間使って答えてくれてんだから
307(1): 2024/04/25(木)17:07 ID:7TwSlN/Q(3/4) AAS
同じ質問は数日待っても解答が得られなかったらとか制限は掛けた方がいいな
redittの方の解答にあるが戻り値がx,yの座標を扱うものであるならVector2を使うと読みやすくなる
308(1): 2024/04/25(木)17:42 ID:ddMre8ET(3/4) AAS
>>306 一理ある。初心者は気を遣うことを覚えるより完成させることを優先しろ、オレの先輩の言葉
>>307 配列のIndexを返したいって話だから、Vec2はオーバーキルだと思うぞ。ぶっちゃけやってることは同じだしわかりやすい方でいいんだけどさ。This is KISS.
309: 2024/04/25(木)18:26 ID:Esvk0j05(6/6) AAS
すまん、どちらか一方にするよ
redditはそれにしても人多いねぇ
310: 2024/04/25(木)18:43 ID:/XEpAv2m(1) AAS
つーかマルチポストで聞く暇あるなら少しは勉強しろよ
初歩的な問題で詰んでるなら尚更
311(1): 2024/04/25(木)20:20 ID:7TwSlN/Q(4/4) AAS
>>308
質問のみならそうなのだが話題の元が倉庫番作るのにキャラ座標をマップ配列に変換するなのでそこまで含むと解答はこうなる
func cpos_to_mpos(cpos:Vector2i, size:int = 32) -> Vector2i:
return cpos / size
312: 2024/04/25(木)21:13 ID:ddMre8ET(4/4) AAS
おー、なるほどね!
Vector2iって勝手にTrancateしてくれるんだな、勉強になったわ
313(1): 2024/04/26(金)06:09 ID:1Ez+K35D(1/3) AAS
>>311
すみません
なんか自己流で複雑なやり方になってる気がする
普通はキャラ座標とマップ座標の変換はやらずに、座標を1つに統一したりするんでしょうか
314(2): 2024/04/26(金)13:14 ID:yaANzBxw(1) AAS
上の人も書いてるけど倉庫番と言うことはグリッドの途中で立ち止まる事はないだろうから、それであれば32で割った盤面上の座標だけ保持して画面表示の時に32倍するなりアニメ補間すればよいのでは
その方がセーブやアンドゥも楽になる
315(1): 2024/04/26(金)13:46 ID:1Ez+K35D(2/3) AAS
>>314
配列使わないということですか?
配列使わない場合、障害物の位置などを表現する場合、どうするでしょうか
二次元配列を使った場合、以下のようにマップを表現すると思います
1=壁,2=キャラ、3=動かせる箱、0=動ける範囲
[
[1,2,3,0,1],
省5
316: 2024/04/26(金)13:52 ID:XXsncJVJ(1) AAS
もしかしてモブはスプライト管理じゃない?
317(1): 2024/04/26(金)14:35 ID:/ZFKx6UF(1/2) AAS
>>315
倉庫番である以上オブジェクトは必ず格子状に配置し管理される
それを2次元配列とみなす事ができる
配列を使わない場合は遠回りに配列があるのと同等の処理を行うだけ
なぜ>>314の説明で配列使わないという解釈になるのかが判らない
配列を使わない便利な魔法でもあると想像してないか?
配列を使わない方法があっても手間が増えて複雑になるだけだから配列が使われる
省1
318: 2024/04/26(金)14:55 ID:/ZFKx6UF(2/2) AAS
>>313
昔はコンソール上で動かす前提で表示もキャラクター単位だったので
配列の要素番号と表示座標の変換は不要だった
今はウインドウアプリになって表示に座標変換は必須
ウインドウアプリの作法も覚えなきゃで同じ倉庫番の初心者講習でも
昔よりは複雑になり難易度上がってはいる
319: 2024/04/26(金)15:42 ID:86tvu5TE(1/2) AAS
絵文字使ってるので表示が上手くいかなかったらごめん
ゲームとしては全然足りないし完成させる所までが課題ではあるが
学習項目を配列のみに集約するとこの配列操作が理解できれば十分
func _ready():
var map = "🧱👷📦🚩🧱\n"
print(map)
map[3] = map[2]
省3
320: 2024/04/26(金)15:45 ID:86tvu5TE(2/2) AAS
二次元配列まで理解できたら上出来
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] = "◾"
省1
321: 我のうんちは小粒(^^ ◆OyJP7qHDVvEI 2024/04/26(金)17:21 ID:jKYfR5nN(1) AAS
二次元配列って配列に配列入れるやつでふよね(^^
そこで詰まってるなら人に聞くよりブッコフに走ってプログラムの基礎が書いてある本買って読んだほうがいいのでは?(^^
煽りとかいじめでいってるんじゃなくて真剣に(^^
ボッキング!(^^
322(1): 2024/04/26(金)18:10 ID:1Ez+K35D(3/3) AAS
>>317
配列でやってみます
ありがとう
昔のやり方というのは、配列の座標を書き換える→画面表示を更新、といったやり方ですよね
今のように、ぬるっと動かすことが出来ないということですね
323: 2024/04/26(金)18:28 ID:Tn7ydmJN(1) AAS
>>322
今の奴ってどのサンプルの話?
存在しない物を今とか空想してんの?
324(1): 2024/04/27(土)14:28 ID:RX6jyHGA(1/3) AAS
フローチャートよりシンプルな図示方法ってないかな?
やっぱりロジックを整理しておいてからコード書かないと脳みそがパンクする
可といってフローチャートは難しい
325: 2024/04/27(土)14:39 ID:RX6jyHGA(2/3) AAS
擬似コードってのやってみますゆえ
326: 2024/04/27(土)16:13 ID:b+RnbsA6(1) AAS
フローチャートが難しいってどういう事
327: 2024/04/27(土)17:08 ID:RX6jyHGA(3/3) AAS
むずいというか、他人に説明するためのものではないので、自分だけ分かる方法でいいかなと
より簡易的であればいいです
フロチャは図形の使いこなしが苦手です
328(1): 2024/04/27(土)22:14 ID:toVZIEFB(1) AAS
>>324
plantumlが面白いかも
plantuml web serverでインストール不要で試せる
検索すればフローチャートの書き方もあるっぽいので
コピペして遊んでみては?
329: 2024/04/28(日)02:33 ID:XkoBpqzr(1) AAS
Godotの2Dのコンセプトは3Dを2Dに見せるやり方ではないってのだけはすぐ分かるのだけど、仮想ゲームマシン的な意味での最大スペックはどこ見ればいいのだ
実行マシンさえ強ければ、昔ながらのBG面もテキスト面もスプライト面もそれらの拡縮回転移動もカラーパレットも無制限で表示させて良い感じなのかな?
他にも昔の疑似3Dもやろうと思えば作れるのだろうけど、それには本物の3D使うよね普通の人は。
330(2): 2024/04/28(日)06:15 ID:6Dc8VXuN(1/4) AAS
1つのスクリプトに書いてるんですが、コードが増えてきた場合、領域を分ける方法は関数以外にありますか?
ただ、視覚的に分けるだけでもいいです
レギオンは使えるみたいですね
>>328
どうも
擬似コード的なものを視覚化するというイメージですかね
331(2): 2024/04/28(日)06:42 ID:6Dc8VXuN(2/4) AAS
コアな機能だけモジュール化なりクラス化なりしたほうがいいのかな
332(2): 2024/04/28(日)09:40 ID:6Dc8VXuN(3/4) AAS
インデントが深くなりすぎる場合、対策はあるでしょうか。
pythonで関数をカッコで表現出来るでしょうか。
333: 2024/04/28(日)11:30 ID:KYDjUHts(1/2) AAS
>>330-332
最初から最後までしっかり読みなさい。
大ヒットゲーム『Balatro』のコードが“力業”だとして共感呼ぶ。コードが汚くても、ゲームが完成してちゃんと動けばそれでいい - AUTOMATON
外部リンク:automaton-media.com
334(1): 2024/04/28(日)12:06 ID:qOnW5aMf(1) AAS
>>330-332
コードの書き方は多種多様な流派があり自分にあった書き方を模索するしかない
チームで開発する時はチームでルールを定める
基本的には公式に従う
安易にファイル分割すると管理が大変になる
単にソースが長いだけならregionで閉じる
全体で共通して使う機能ならグローバルなクラスに纏める
省5
335(1): 2024/04/28(日)13:46 ID:GkEu3rtv(1) AAS
力業ねえ
そうは言っても作り方のセオリーはあるんじゃないかな
ユニティだけど物理ワールドでオブジェクト移動するときにポジションに1加算みたいなことしたらバグるし重いよね
ベロシティにアドフォースするのがセオリーじゃん?
そんな感じで、頭の悪いぐちゃぐちゃなセオリーもへったくれもないコードだと見づらいバグる重いでいいことないし
ゴドーで「こういう仕組み作るときはこうやるのがベター」みたいなノウハウを集めたサイトが欲しいわ
上下前次1-新書関写板覧索設栞歴
あと 667 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s