[過去ログ] 【軽量】godot engine【無料】 part3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
291(1): 名前は開発中のものです。 [sage] 2024/04/25(木) 00:19:55.34 ID:5JWtrSqN(1/4) AAS
昔の2Dゲーム機は基本的に背景をマップタイル(キャラクタージェネレータなどとも呼ばれる)単位で管理してたものだから、同じように仮想的なタイルを敷き詰めた画面があるものとして構造体組んで、その上でモブがタイルに沿って動く管理を考えるのがとりあえずは昔のノウハウを適用できて簡単だと思う
倉庫番はまさにそういう動き
292(1): 名前は開発中のものです。 [sage] 2024/04/25(木) 00:27:21.13 ID:8kKIrJCJ(1) AAS
AIに聞けばええやん
293(1): 名前は開発中のものです。 [sage] 2024/04/25(木) 00:30:55.75 ID:5JWtrSqN(2/4) AAS
なのでモブが動くときはpix単位の座標移動が発生するけどそれはサブルーチンとして、ゲームアルゴリズムとしてはマップ全体の座標を整数の配列で(例えば100×100とか)表して制御し、画面に表示する座標は既に言われてるように適切に係数掛け算する関数を作るのが良いと思います
倉庫番の場合、マップが広いレベルを縮小してモニタに表示したりするので、その拡大縮小表示の変換が自由にできるほうがUXが良くなるし、なんなら回転表示もしたくなるかもしれないので。
294: 名前は開発中のものです。 [sage] 2024/04/25(木) 00:33:10.60 ID:5JWtrSqN(3/4) AAS
>>292
まあ倉庫番まんまならAIに頼めばノーコードで完成するでしょうな
しかしゲームメカニクスの基礎は自分の頭で考えないと応用が効かなくなるから
295: 名前は開発中のものです。 [sage] 2024/04/25(木) 00:42:09.44 ID:7TwSlN/Q(1/4) AAS
ちがうアプローチとしてはTileMapを使用するかな
使えるようになるまでのコストが大きいからお勧めとは言い難いが
高機能で複雑な分、理解できたら便利なクラス
296: 名前は開発中のものです。 [SAGE] 2024/04/25(木) 01:06:24.88 ID:/gUanyy1(1) AAS
理解できないから半年以上苦しんでるんでしょう。
もっと園児でもわかるような単純なやり方を教えてあげて
297: 名前は開発中のものです。 [sage] 2024/04/25(木) 01:08:58.36 ID:5JWtrSqN(4/4) AAS
まんまTilemapなクラスがあったのね
これなら簡単だわ勉強になりました
298: 名前は開発中のものです。 [] 2024/04/25(木) 06:12:26.81 ID:Esvk0j05(1/6) AAS
>>291
キャラの動きも配列の書き換えで行って、書き換えられたら再描画というふうにしてもいいんですが
これだと滑らかに動くキャラってのが作れなくなるんですよね
だからチュートなどではvector2で移動させてるんだろうなと
マップ座標とvector2座標の変換は必要になりますね
>>289289(1): 名前は開発中のものです。 [sage] 2024/04/24(水) 20:27:18.43 ID:PzjnMMaW(1) AAS
普通に割り算して切り捨てるだけでは
ものを1マス単位で動かさない前提なら1マス辺りの座標を1にして逆に見た目の方の座標を掛け算なりする方が楽
別に特殊なクラスとか使うことないんですね
299: 名前は開発中のものです。 [] 2024/04/25(木) 06:27:04.46 ID:Esvk0j05(2/6) AAS
>>293
ゲームロジックとしては配列の書き換えだけということですか?
配列の書き換え→その位置に基づいてキャラを描画、ということでしょうか
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ずつ動かしたいわけじゃないので、それはその通りです。
上下前次1-新書関写板覧索設栞歴
あと 687 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s