[過去ログ] ゲームプログラミング相談室【Part5】 (970レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
36
(2): 02/11/10 07:26 ID:??? AAS
オブジェクトのワールド座標ににプロジェクション行列の逆行列をかけて
求まったxとyを使えば良いんじゃねーの?
その時、原点は画面中央、640×480の場合、xが0なら
画面中央320って事じゃないの?
…漏れの環境だとね。
zはカリングで使うじゃない?マイナスだとカメラの後ろに来てるって事。
37
(1): 02/11/10 11:38 ID:??? AAS
>>34
static class menber でも、問題が出るものと出ないものがあります。

 普通のクラスの static member object -> 問題なし
 テンプレートクラスの static member object -> relocation truncated ... でリンク時エラー

普通のクラスとテンプレートクラスで異なる点は、nm で見た限りだとシンボルが
weak か否かという点。テンプレートクラスの static member は複数の翻訳単位
でインスタンス化される可能性があるけど、リンク後には実体を 1 つにせにゃな
らんので weak object になってる。

それで weak object + .sdata セクションという組み合わせが悪いのかと思ったの
だけど、違うのかなぁ。(これ以上は binutils のソース読まんと解決しないような
気がしてきた)

> でも、やっぱ -G0
らじゃ。
38: 02/11/10 17:12 ID:X0lDMmpo(1) AAS
>>36
  >オブジェクトのワールド座標ににプロジェクション行列の逆行列をかけて
>求まったxとyを使えば良いんじゃねーの?
これですと 値が変動するときは プロジェクション行列が変わった時だけ
  なのでうまくいかないと思います。

  
39: 36 02/11/10 19:10 ID:??? AAS
ああ、すまんね。
こっちの環境だと、独自クラスのカメラてのがあって
毎フレーム、視錐台の変更って感じでやっているから出切るんだわ。
40: 前編 02/11/10 20:19 ID:JSg4/5lD(1/2) AAS
はいではやりかたを整理しましょう。
まず変換したいワールド座標にカメラの逆行列をかけます。
これはDIRECTXではGetTransなんとかでとれるあたいそのままです。
つぎにプロジェクションマトリクスをかけます。
これは大抵の環境で同じです。
それからビューポートの変換です。
これは640X480の場合は
41: 後編 02/11/10 20:29 ID:JSg4/5lD(2/2) AAS
X=(X/W)*320+320
Y=(Y/W)*-240+240
で終了です。
これはDIRECTXのヘルプにものっています。
ヘルプでビューポートで検索をかけるとみつかります。
これでできなかったら少し実際にものをだして動かしてみてはどうでしょうか?
42
(1): 37 02/11/11 20:55 ID:??? AAS
解決しました。結論としては linker に読ませてるスクリプト指定が腐ってる、
.gnu.linkonce.s セクションのデータを $gp 相対でアクセスできそうなところに
配置しろ、ってことで。

(結局 gcc のソースを読む羽目になったよ……)
43
(1): 02/11/12 00:59 ID:??? AAS
>>42
そんなんでgccのソース読む羽目になったの?
マップファイル見たらすぐわかりそうなのに。
44
(1): 02/11/12 01:18 ID:??? AAS
>>43
それは「.gnu.linkonce.s セクションって何、どういう条件で作られるの?」っつー
のが、分からなかったから。推測はついたけど、裏をとらないと困るっしょ。
45
(1): 02/11/12 01:35 ID:??? AAS
>>44
そこまで見たあんたに尋ねるが、ソノ環境で、vtblは何処に出てる?
.gnu.linkonce.d.vt とか、そんなんだと思う。

なんか、gccのデフォルトで、.dataの一部として吐かれるみたいなんだけど、
書き込み可能なセクションに吐く理由がわからなくて気になってるんだ・・・。
46
(1): 02/11/12 21:24 ID:??? AAS
>>45
確かに .gnu.linkonce.d.__vt_なんちゃら セクションに書かれてる。

gcc/cp/class.c を読むと

#ifndef WRITABLE_VTABLE
  TREE_READONLY (decl) = 1;
#endif

みたいな記述があるから .gnu.linkcode.r に配置されそうなもんだが。謎。
47: 02/11/13 00:43 ID:??? AAS
>>46
おお、そのマクロでしらべてみたら、なんかでてきたよ。
ありがとん。

で、デフォルトでそんなマクロは定義されないらしいのだが・・・。やはり謎。
48: あぼーん [あぼーん] あぼーん AAS
あぼーん
49
(1): 02/11/16 22:06 ID:??? AA×

50: 02/11/16 23:26 ID:VL8Oafej(1) AAS
>>49
はやまるなー
51: 02/11/21 03:03 ID:277H+gCD(1) AAS
終了厨がおおいですなぁ
52: 02/12/06 07:52 ID:c2Ro9O0h(1) AAS
ここでも、保守。
53: あぼーん [あぼーん] あぼーん AAS
あぼーん
54
(1): 02/12/09 22:53 ID:gy0Rwv2m(1) AAS
やる気のないゲームプログラマです。
丁度プロジェクトのハザマで暇なので
ツール作成でもしてみなさい、と上司に言われました。
イチから作成する根性もやる気もないのでとりあえず
VRAMを眺めるツールでも改造してみようかと思うんですが
どう改造したら勉強になるのか見当がつきません。
どうせ改造するならためになるほうがいいんだけど・・
ハードはGBAです、どなたかお知恵を。。
55: あぼーん [あぼーん] あぼーん AAS
あぼーん
56: 02/12/10 09:19 ID:JzMo+9Nz(1) AAS
>>54
アイタタ
57: あぼーん [あぼーん] あぼーん AAS
あぼーん
58: 02/12/23 20:03 ID:CHDaAJj8(1) AAS
誰も相談したい人いないのか?
59: 02/12/23 22:42 ID:frBmN/bA(1/2) AAS
ゲームのあたり判定ってどうやってるの?
精妙なあたり判定を作りたいときは大小の四角を何個か組み合わせればいいのかな?
60: 02/12/23 22:45 ID:mYrEUkS2(1) AAS
当たり判定用のデータを他に持つと簡単。
具体的なビットマップだったり、矩形だったりするが
それはゲーム依存。

当たりを判定して、何に使うかというのもポイントだったりするので
そのへんもデザインしよう。
61: 02/12/23 22:57 ID:frBmN/bA(2/2) AAS
なーるほど、サンクス!
62: 02/12/23 23:53 ID:OrL+tItn(1) AAS
12月、1月は一時閉鎖します。
63: あぼーん [あぼーん] あぼーん AAS
あぼーん
64
(2): 02/12/25 01:36 ID:06ow8SQ/(1) AAS
mx・・・自機X座標、my・・・自機Y座標、mxa・・・自機X幅、mya・・・自機Y幅
ex・・・敵機X座標、ey・・・敵機Y座標、exa・・・敵機幅、eya・・・敵機Y幅

if ( (mx<ex+exa)&&(mx+mxa>ex)&&(my<ey+eya)&&(my+mya>ey) ) ...

シューティングのオーソドックス?な当たり判定はこんな感じのやり方しか
知らないんだけど他にはどんな方法がありますか?
ゲームやハードに依存しててもいいからいろんな判定の仕方が知りたいYO!
65
(3): 02/12/25 02:21 ID:fYJY+WkT(1) AAS
説明めんどいのでこれで理解して。最近流行の弾幕系専用当り判定。

cEnemy…敵管理クラス。

cEnemy* hitRect[40][30];
cEnemy* pHitList = hitRect[mx/16][my/16];

while(pHitList != NULL){
if( pHitList->IsHit(mx,my) ) printf("どっかーん");
pHitList = pHitList->GetNext();
}
1-
あと 905 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.019s