[過去ログ] 【軽量】godot engine【無料】 part3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
299: 名前は開発中のものです。 [] 2024/04/25(木) 06:27:04.46 ID:Esvk0j05(2/6) AAS
>>293293(1): 名前は開発中のものです。 [sage] 2024/04/25(木) 00:30:55.75 ID:5JWtrSqN(2/4) AAS
なのでモブが動くときはpix単位の座標移動が発生するけどそれはサブルーチンとして、ゲームアルゴリズムとしてはマップ全体の座標を整数の配列で(例えば100×100とか)表して制御し、画面に表示する座標は既に言われてるように適切に係数掛け算する関数を作るのが良いと思います
倉庫番の場合、マップが広いレベルを縮小してモニタに表示したりするので、その拡大縮小表示の変換が自由にできるほうがUXが良くなるし、なんなら回転表示もしたくなるかもしれないので。
ゲームロジックとしては配列の書き換えだけということですか?
配列の書き換え→その位置に基づいてキャラを描画、ということでしょうか
300: 名前は開発中のものです。 [] 2024/04/25(木) 12:30:15.39 ID:Esvk0j05(3/6) AAS
関数から、2つの値を返すには何使うんですか?
カンマ区切りではダメだったので[1,2]こういう形にしたらいけました
301: 名前は開発中のものです。 [] 2024/04/25(木) 12:50:05.12 ID:Esvk0j05(4/6) AAS
↑2つの値を返して、二次元配列として使いたい感じです
array[0][0]
こんな感じです
302: 名前は開発中のものです。 [sage] 2024/04/25(木) 13:25:04.08 ID:7TwSlN/Q(2/4) AAS
2つの値を返す方法が[1,2]でいけたならそれで解決じゃね?
var return_value = [1, 2]
array[return_value[0]][return_value[1]]
303: 名前は開発中のものです。 [sage] 2024/04/25(木) 14:29:31.06 ID:ddMre8ET(1/4) AAS
GDScriptでいいのか?
Pythonっぽい言語仕様だけど実際はC++をスクリプトにしただけっぽいので
Pythonで複数の値を返す時に使うTupleは使えないんだとよ
方法としては2つ、Arrayで返すかDictionaryで返す
以下はサンプルコードな ※RUNボタンで実行結果も確認できるぞ
外部リンク:gd.tumeo.space
304: 名前は開発中のものです。 [] 2024/04/25(木) 15:44:33.49 ID:Esvk0j05(5/6) AAS
ありがとう配列で値を返して、インデックス番号でとればいいんですね
これがタプルってやつですか
外部リンク:www.reddit.com
あと、人いねーと思っていつもの癖でマルチポストしちゃった
ごめんなさい改善します
305: 名前は開発中のものです。 [sage] 2024/04/25(木) 16:12:28.75 ID:ddMre8ET(2/4) AAS
マルチでもなんでも問題解決できりゃなんでもいいんだぞ
あとTupleの話は出すべきじゃなかったな、忘れてくれ
306(1): 名前は開発中のものです。 [sage] 2024/04/25(木) 16:35:23.02 ID:lNMYdYSi(1) AAS
流石になんでも良くはねえよ…
それぞれの場所で時間使って答えてくれてんだから
307(1): 名前は開発中のものです。 [sage] 2024/04/25(木) 17:07:59.94 ID:7TwSlN/Q(3/4) AAS
同じ質問は数日待っても解答が得られなかったらとか制限は掛けた方がいいな
redittの方の解答にあるが戻り値がx,yの座標を扱うものであるならVector2を使うと読みやすくなる
308(1): 名前は開発中のものです。 [sage] 2024/04/25(木) 17:42:32.62 ID:ddMre8ET(3/4) AAS
>>306 一理ある。初心者は気を遣うことを覚えるより完成させることを優先しろ、オレの先輩の言葉
>>307 配列のIndexを返したいって話だから、Vec2はオーバーキルだと思うぞ。ぶっちゃけやってることは同じだしわかりやすい方でいいんだけどさ。This is KISS.
309: 名前は開発中のものです。 [] 2024/04/25(木) 18:26:51.75 ID:Esvk0j05(6/6) AAS
すまん、どちらか一方にするよ
redditはそれにしても人多いねぇ
310: 名前は開発中のものです。 [sage] 2024/04/25(木) 18:43:10.78 ID:/XEpAv2m(1) AAS
つーかマルチポストで聞く暇あるなら少しは勉強しろよ
初歩的な問題で詰んでるなら尚更
311(1): 名前は開発中のものです。 [sage] 2024/04/25(木) 20:20:30.32 ID:7TwSlN/Q(4/4) AAS
>>308
質問のみならそうなのだが話題の元が倉庫番作るのにキャラ座標をマップ配列に変換するなのでそこまで含むと解答はこうなる
func cpos_to_mpos(cpos:Vector2i, size:int = 32) -> Vector2i:
return cpos / size
312: 名前は開発中のものです。 [sage] 2024/04/25(木) 21:13:31.21 ID:ddMre8ET(4/4) AAS
おー、なるほどね!
Vector2iって勝手にTrancateしてくれるんだな、勉強になったわ
313(1): 名前は開発中のものです。 [] 2024/04/26(金) 06:09:14.77 ID:1Ez+K35D(1/3) AAS
>>311
すみません
なんか自己流で複雑なやり方になってる気がする
普通はキャラ座標とマップ座標の変換はやらずに、座標を1つに統一したりするんでしょうか
314(2): 名前は開発中のものです。 [sage] 2024/04/26(金) 13:14:53.40 ID:yaANzBxw(1) AAS
上の人も書いてるけど倉庫番と言うことはグリッドの途中で立ち止まる事はないだろうから、それであれば32で割った盤面上の座標だけ保持して画面表示の時に32倍するなりアニメ補間すればよいのでは
その方がセーブやアンドゥも楽になる
315(1): 名前は開発中のものです。 [] 2024/04/26(金) 13:46:32.39 ID:1Ez+K35D(2/3) AAS
>>314
配列使わないということですか?
配列使わない場合、障害物の位置などを表現する場合、どうするでしょうか
二次元配列を使った場合、以下のようにマップを表現すると思います
1=壁,2=キャラ、3=動かせる箱、0=動ける範囲
[
[1,2,3,0,1],
[1,0,0,0,1],
[1,1,1,1,1],
]
グリッドの途中で立ち止まらないというのは、32ずつグリッド移動するという意味ですよね。
1pxずつ動かしたいわけじゃないので、それはその通りです。
316: 名前は開発中のものです。 [sage] 2024/04/26(金) 13:52:06.26 ID:XXsncJVJ(1) AAS
もしかしてモブはスプライト管理じゃない?
317(1): 名前は開発中のものです。 [sage] 2024/04/26(金) 14:35:25.85 ID:/ZFKx6UF(1/2) AAS
>>315
倉庫番である以上オブジェクトは必ず格子状に配置し管理される
それを2次元配列とみなす事ができる
配列を使わない場合は遠回りに配列があるのと同等の処理を行うだけ
なぜ>>314の説明で配列使わないという解釈になるのかが判らない
配列を使わない便利な魔法でもあると想像してないか?
配列を使わない方法があっても手間が増えて複雑になるだけだから配列が使われる
配列を使った方法で理解するのが定番
318: 名前は開発中のものです。 [sage] 2024/04/26(金) 14:55:56.89 ID:/ZFKx6UF(2/2) AAS
>>313
昔はコンソール上で動かす前提で表示もキャラクター単位だったので
配列の要素番号と表示座標の変換は不要だった
今はウインドウアプリになって表示に座標変換は必須
ウインドウアプリの作法も覚えなきゃで同じ倉庫番の初心者講習でも
昔よりは複雑になり難易度上がってはいる
319: 名前は開発中のものです。 [] 2024/04/26(金) 15:42:16.89 ID:86tvu5TE(1/2) AAS
絵文字使ってるので表示が上手くいかなかったらごめん
ゲームとしては全然足りないし完成させる所までが課題ではあるが
学習項目を配列のみに集約するとこの配列操作が理解できれば十分
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(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] = "◾"
for c in map: print(c)
321: 我のうんちは小粒(^^ ◆OyJP7qHDVvEI [] 2024/04/26(金) 17:21:02.02 ID:jKYfR5nN(1) AAS
二次元配列って配列に配列入れるやつでふよね(^^
そこで詰まってるなら人に聞くよりブッコフに走ってプログラムの基礎が書いてある本買って読んだほうがいいのでは?(^^
煽りとかいじめでいってるんじゃなくて真剣に(^^
ボッキング!(^^
322(1): 名前は開発中のものです。 [] 2024/04/26(金) 18:10:17.22 ID:1Ez+K35D(3/3) AAS
>>317
配列でやってみます
ありがとう
昔のやり方というのは、配列の座標を書き換える→画面表示を更新、といったやり方ですよね
今のように、ぬるっと動かすことが出来ないということですね
323: 名前は開発中のものです。 [sage] 2024/04/26(金) 18:28:59.68 ID:Tn7ydmJN(1) AAS
>>322
今の奴ってどのサンプルの話?
存在しない物を今とか空想してんの?
上下前次1-新書関写板覧索設栞歴
あと 679 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s