【ゲームで、この処理ってどーやってんの?】
■ このスレッドは過去ログ倉庫に格納されています
ゲームを作ってるor作りたい人が、自分のゲームに実装したい処理や、既存のゲームのこんな処理ってどーやって実現してるの?と質問すると、心優しい誰かが説明してくれるスレです。
質問は、これこれこういう処理、〇〇のゲームのこれみたいな、とか、△△のこの面のこれってどーやってんの?という感じで既存のゲームなどを例示したりして、分かりやすい質問を心がけましょう。
説明は、コード羅列は禁止しましょう。長文でも良いので、このようにできている、又は、こんな感じでできるんじゃない、という風に文章で分かるような説明を心がけましょう。
■ゲーム開発会社がゲーム製作技術を伝授するスレ
https://mevius.5ch.net/test/read.cgi/gamedev/1520381891/
↑上記スレを見ていて、現スレのようなのがあれば、便利かなと思って建てました。 即消されないように、しばらく自問自答したいと思います。
自分がなるほどなあ、と思った超基礎的なやつ。
1行なのでコードで書かせてください。いきなり禁止破り。原則禁止、とすべきでした。
0〜nの数字を順送りし、n番目の次は0に戻る処理
a=(a+1)mod(n+1)
n+1で、増えていくaを割った余りを返すことで、nの次は0に戻る処理です。 a+1の1を任意の数値にすることで、いくつ進めるかを任意にできます。 次。
0〜nの数字を順送り逆送りして、n+1で0、0から-1になった場合nになる処理。
どーだっけな。
m:加算値(+1や-1など任意の正負の数
a=(a+m+n+1)mod(n+1)
合ってるかな。
a+mに最大値nと1を足すことで、a+mがマイナスになった場合、プラスの数値に変換し、n+1で割った余りを戻すことで、0-1をnに送ることができます。
式、合ってるよね? マウスドラッグで画面をつまんでスクロール。
描画座標x,y
@ドラッグ開始座標dx,dy
Aマウス座標mx,my
描画タイミングごとに、@とAの差を描画座標に加算して描画して、@にAを代入する。
こんな感じだったっけ。 ちなみに、1は自分でゲーム作ってる人です。
作ってる時に、あ、なるほどー、自分で思いついた俺、天才!とか思ったことを、しばらく書いていきたいと思います。 クロスバー表現。
アイテムなどを種別ごとに横並び、強さなどごとに縦並びで、PS3のクロスメディアバーのようなものを作りたくって考えました。
詳しくはちょっと忘れちゃったけど、今作り直したらもっと理解して作れそう。
横種別がn
縦並びのアイテムを配列yoko(n).data(m個(種別ごとの動的配列)
で、表示開始ID、横用yと縦用t(n)を持ち、
操作で、yとt(n)が変化するごとに表示内容が変わります。
t(n)なので、横に動かすと全体が横移動しますが、縦に動かすと、1列のみ縦移動するように動きます。 その際、マウスの動きが縦方向なのか、横方向なのかを検知する必要がありました。
これは、上記マウスのドラッグで移動を応用して、
開始座標と、0.01秒とかの短い時間後のマウス座標の差から絶対値を出し、x>yなら横移動、y>xなら縦移動したとみなして、それぞれの処理を行ないます。 この部分はもっと最適化できそうだけど、めんどいので放置してます。
というか、自分が考えついた処理は、unityとかのツールだとライブラリであるのかなあ、と思いますが、あえて遠回りしてる自分が良いのか悪いのか、トホホ 自分の疑問も書いておきます。
■星のドラゴンクエストで、球形マップを、@クルクルした後、回転をリセットすると、球形マップのA初期表示角度に戻ると思うのだけど、戻る途中の描画に使う角度などの計算はどうやってるの?
クルクルは自分で作れたつもりなんだけど、xyzの三軸回転と視点カメラの位置と方向とかも含めて考えるとこんがらがってわけわかめ。 ちなみに1の知識はファミコンレベルかと思いますので、ご了承ください。 先日他スレで書いたやつ
ファミコングラディウスの2面の粒々のあたり判定
粒々は配置されてる動かない物体なので、横スクロール座標と、ビームなどの座標を合成した座標に、粒々があったら当たったと見なして消滅処理すればイイんじゃないかなあと思いました。
例えば、現在表示される画面を描画する際、8×8ドットごとに区切ったマトリクスを2次元配列で持つとかして、中身は0:空っぽ(背景)、1:破壊可能物体、2:破壊不可物体とかを設定。
これは、面のマップ情報をスクロール分だけずらして、現在表示分をコピるだけでもイイですね。
昔のテレビって640×480でしたっけ?だと、横80×60の比較用配列で済むか。
で、ビームやレーザーの現在位置をビームが移動するごとにその配列のインデックスに直接参照できるから、オブジェクトごとの衝突判定みたいな時間のかかる処理は必要ないかと思いました。 ■ このスレッドは過去ログ倉庫に格納されています