C/C++ゲーム製作総合スレッド Part4
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2013/08/12(月) NY:AN:NY.ANID:RPqvnGkC元スレ
DXライブラリ 総合スレッド その12
http://toro.2ch.net/test/read.cgi/gamedev/1330000532/
前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
0755名前は開発中のものです。
2013/11/23(土) 15:52:53.74ID:eDIontM4外部シンボルの解決はリンカの範疇の話だから、includeの話じゃない
たまたま include先で pragma してたらリンクされるけど、本質的にリンカの話。
ビルド時にリンクしてないんじゃないの?
0756名前は開発中のものです。
2013/11/24(日) 00:58:34.12ID:nXfPoBTRヘッダーに宣言があってもリンク時に定義(本体)が見つからなければそらエラーになるさ
ライブラリをリンクし忘れる以外でも
関数の本体を書くのを忘れた、とか
書いていてもcppがプロジェクトに入ってなくてコンパイルされていないとかでも起こる
0757名前は開発中のものです。
2013/11/24(日) 05:16:53.08ID:8WCzf0hrAクラスはコンストラクタ2つ宣言してて1つしか定義していませんでした。。。
Aクラスの親クラスは2つ定義していたから勘違いしててずっと気づかなかった。
ありがとうございました!
0758名前は開発中のものです。
2013/11/24(日) 16:28:43.61ID:Hldh+di00759名前は開発中のものです。
2013/11/28(木) 08:11:12.57ID:CZM1vdUb0760名前は開発中のものです。
2013/11/28(木) 09:37:30.27ID:7WgsJNsl0761名前は開発中のものです。
2013/11/28(木) 09:51:07.57ID:al6vnunW0762名前は開発中のものです。
2013/11/28(木) 10:19:38.67ID:X9Kxk+W20763名前は開発中のものです。
2013/11/28(木) 10:44:05.67ID:xZXVZMiYcam.dirX += cam.speed;
cam.posX = cam.range * sinf(cam.dirX * PI / 180.0f);
cam.posZ = cam.range * cosf(cam.dirX * PI / 180.0f);
縦回転(上)はこれなんだが
cam.dirY += cam.speed;
cam.posY = cam.range * sinf(cam.dirY * PI / 180.0f);
cam.posZ = cam.range * cosf(cam.dirY * PI / 180.0f);
縦回転するときだけX軸にぐにゃっと動きながら回転するんだよなぁ、多分>>761の通りミスかも
出先だから詳しくなくてすまん、あとdirは角度
0764名前は開発中のものです。
2013/11/28(木) 11:02:27.16ID:LQeMJPROそういうときはsinをcos変えてみるべ
0765名前は開発中のものです。
2013/11/28(木) 11:03:24.11ID:LQeMJPRO0766名前は開発中のものです。
2013/11/28(木) 11:33:55.99ID:Px6CCwOG0767名前は開発中のものです。
2013/11/28(木) 11:46:55.19ID:uKSbr4aj結構バラバラだったりするしなあ。
0768名前は開発中のものです。
2013/11/28(木) 14:45:26.84ID:WY2yxhUIposZ = range * cosf(dirY * PI / 180.0f);
バグのもと
上の式から逆算してdirX計算してるならxが動くのもあたりまえ(dirX=dirY、斜めに回転)
初期状態で全部変わるから行列から計算しなきゃ出ないと思うよ
3Dアクションのソース見れば幸せになれる
0769名前は開発中のものです。
2013/11/28(木) 14:55:56.16ID:xZXVZMiY視点はプレイヤー固定なのでsinとcosをちょっと弄ってみるかなぁありがとう
0770名前は開発中のものです。
2013/11/28(木) 15:15:08.32ID:WY2yxhUI直接式書くなら三角関数の数はxzは2つyは1つだと思う
0771名前は開発中のものです。
2013/11/28(木) 15:40:16.54ID:l3wVILCrアクションのソースとか言っちゃった恥ずかし
一応初期値(1,0,0)でY軸回転αZ軸回転βなら
x=L*cosα*cosβ
y=L*cosα*sinβ
z=L*sinα
間違ってる可能性もあるし参考程度にどうぞ
0772名前は開発中のものです。
2013/11/30(土) 12:10:58.88ID:lvaUOwa3栗山
千葉
小村
西塚
0773名前は開発中のものです。
2013/11/30(土) 21:01:47.61ID:WaV6+DQM時間かかったけどカメラの角度にあわせてキャラを動かすのって結構理解してないと出来ないよな・・・
0774名前は開発中のものです。
2013/12/01(日) 02:05:33.15ID:oOKmIZTkカメラと一緒に移動させるのは面倒だった気がする
こっち向ける+カメラ位置が動くと移動+カメラ角度が動くと移動
0775名前は開発中のものです。
2013/12/01(日) 07:20:38.32ID:+WHSwaPK0776名前は開発中のものです。
2013/12/01(日) 09:55:24.92ID:jbLYHAr/0777名前は開発中のものです。
2013/12/01(日) 13:48:16.95ID:+WHSwaPKあとは想定している角度と距離でカメラを動かすだけ。
0778名前は開発中のものです。
2013/12/01(日) 14:07:02.97ID:oOKmIZTk追従ターゲットとは別にステータスとか視界回り固定しなきゃいけないのを3D使うときにいる
そこから「こっち向ける」を消せば角度コンパスになるし
ねじりだけ追従ターゲットにすれば飛行機操縦でダメージ受けたときの揺れを表現できたり
0779名前は開発中のものです。
2013/12/01(日) 15:41:38.59ID:+WHSwaPK一つのシーンを描画するのに、カメラを一つしか作れないという固定観念に捕らわれているやつを見ると、
なんでこんなに頭が固いんだろうとしか思えない。
スクリーンの特定の位置に固定するのなら、それがやりやすい座標が使えるカメラを用意すればいいだけ。
カメラは描画するものに応じて切り替えろ。
3D空間上のワールド座標を使用する平面オブジェクトなら、
頂点シェーダでワールド変換をかけた後に、平面を引き延ばせば余計な逆変換もいらない。
簡単にできることを、なんで遠回りで無駄な方法でやろうとするのかさっぱり理解できない。
0780名前は開発中のものです。
2013/12/01(日) 15:46:57.06ID:jbLYHAr/0781名前は開発中のものです。
2013/12/01(日) 17:06:03.08ID:qiVwV83p例が悪くてすまんね
最初は追従する属性を持ったオブジェクトとして3D衝突判定用カメラで管理したいから実装したんだ
例はそれを2D用に移植しただけ
それともオブジェクトの下に移動用カメラがあるなら設計の違いだね
その実装にかかる労力が違う
0782名前は開発中のものです。
2013/12/01(日) 17:23:57.22ID:7Qx01R/Mカメラで衝突判定?
0783名前は開発中のものです。
2013/12/01(日) 18:00:54.04ID:OLw0mnPy何かに当たるじゃん?
そこは通行不可じゃん?
0784名前は開発中のものです。
2013/12/01(日) 18:05:36.28ID:0yRdePyz0785名前は開発中のものです。
2013/12/02(月) 11:55:14.28ID:jHZt/44N岩みたいな地形をキャラクターに歩かせたり、
車で凹凸によるジャンプとかしたいんだけど
0786名前は開発中のものです。
2013/12/02(月) 12:20:05.98ID:jaAk+efU0787名前は開発中のものです。
2013/12/02(月) 13:09:52.50ID:1PlO4ycl判定よ判定
true or falseで知りたい
0788名前は開発中のものです。
2013/12/02(月) 13:52:33.76ID:EmIrbEhh0789名前は開発中のものです。
2013/12/02(月) 14:26:37.50ID:gdGFdJWe1.Bulletの衝突検出は物理部分抜きの単体で使えるからそれを使う
2.ODEの衝突検出が、OPCODEっつー単体のライブラリとして使えるからそれを使う。
3.DirectXMathにプリミティブの衝突判定がいくつかあるからそれを使う。
4.「ゲームプログラミングのためのリアルタイム衝突判定」って本があるからそれを読んで自分で作る。
好きな道を選ぶといい。やりたいことにもよるけど、大抵下に行くほど茨の道。
0790名前は開発中のものです。
2013/12/02(月) 17:07:26.41ID:KYoWWiEKその true or false で結果を得られる判定の為に、物理と代数幾何が必要って事。
0791名前は開発中のものです。
2013/12/02(月) 17:24:57.04ID:5lIjXhCp0792名前は開発中のものです。
2013/12/02(月) 17:44:53.07ID:G29AI0ve前フレームと現フレームを線でつないで適度な太さのカプセルと判定させる
ゲーム判定なんてそんなもん
0793名前は開発中のものです。
2013/12/02(月) 23:05:32.90ID:FEVutad40794名前は開発中のものです。
2013/12/03(火) 00:21:44.15ID:d6qZR4af0795名前は開発中のものです。
2013/12/03(火) 00:33:14.34ID:NkdNt8Ub0796名前は開発中のものです。
2013/12/03(火) 00:39:28.72ID:z2GiRDVwぐりぐりするとすり抜けちゃう市販ゲームがちらほらと
0797名前は開発中のものです。
2013/12/03(火) 08:26:06.61ID:GB89ajeyお前ら普段どんな処理書いてるの?
移動と、接触の、処理のイメージがちゃんとプログラムのレベルで見えてるか?
0798名前は開発中のものです。
2013/12/03(火) 11:15:20.32ID:0MeippoD0799名前は開発中のものです。
2013/12/03(火) 11:16:26.65ID:eOARjFDi0800名前は開発中のものです。
2013/12/03(火) 14:48:12.77ID:vxT989Z6この辺が抽象的過ぎて何を言いたいのかさっぱり掴めん
0801名前は開発中のものです。
2013/12/03(火) 14:54:10.31ID:eOARjFDi0802名前は開発中のものです。
2013/12/03(火) 15:35:06.24ID:0mzyFwsy今じゃ放置が基本なのかな
0803名前は開発中のものです。
2013/12/03(火) 15:57:16.14ID:xraxN8FU0804名前は開発中のものです。
2013/12/03(火) 17:15:19.68ID:GB89ajey自分で実装してたら、それが抽象的に見えたりさっぱりわからないなんて事無いと思うけど。
単純に方向決めて座標の数値加算だけして、移動前と移動後の線分と対象の面との交差判定するにしろ、
計算量との兼ね合いで荒い凸包との交差計算する事になった時に、その隙間にあたってすり抜ける事だってあるがな
>>801
違ぇよ。自分で書け。ここで説明とかいらないから。
0805名前は開発中のものです。
2013/12/03(火) 17:20:58.72ID:GB89ajey2Dでよくあるような論理マップ上のマスとの移動先との接触計算を応用したような場合、
そのマスに決めた単位を越えるような加算をしたら当然突き抜けちゃう訳で、
「必ず突き抜けない」って事も無いし、「必ず突き抜ける」って事も無いだろ。
だから普段、どう実装してたら空気抵抗だの、スピードで変わるような言い様だの出てくるんだと思った訳だ。
わかれ。
0806名前は開発中のものです。
2013/12/03(火) 18:34:04.90ID:ibyagH3n俺は>>797ではないが
さすがに言ってることの意味は分かるよ
移動処理のコードを思い浮かべると
キー入力でキャラが移動
具体的には移動に割り当てた変数が加算したり減算したり
その変数をカメラ位置座標と中視点座標にも割り当てれば
カメラも同時に付いていく
次に接触処理のコードを思い浮かべると
接触範囲に割り当てた座標の変数も同時に加算もしくは減算
主人公と敵の周囲当たり当たり判定の座標が接触したら
戦闘画面に突入
戦闘BGMスタート!
と同時に2Dコマンド欄がピキン!と表示
0807名前は開発中のものです。
2013/12/03(火) 18:39:47.05ID:U1o1gERCどっかで手を抜かないとなかなかゲームは完成しないぞ?
で、手を抜いた結果として突き抜けバグが発生したりする
0808名前は開発中のものです。
2013/12/03(火) 18:48:33.82ID:GB89ajeyん、安価ミス?俺自身はずいぶん前にリリースしてる。BPなんで自社製品じゃないけど、多分世にも出てる。
趣味でも書くけど。
0809名前は開発中のものです。
2013/12/03(火) 18:51:51.68ID:U1o1gERC0810名前は開発中のものです。
2013/12/03(火) 19:08:08.70ID:vxT989Z6ってかすでに804と806の言っている事がすでに食い違っているように見えるが
それも俺の無学のせいなのか
0811名前は開発中のものです。
2013/12/03(火) 19:08:25.10ID:w8hO6toj0812名前は開発中のものです。
2013/12/03(火) 19:12:25.94ID:vxT989Z6すまんしばらくROMるわ
0813名前は開発中のものです。
2013/12/03(火) 20:28:04.75ID:N8etVaFNというか、加速度と空気抵抗が釣り合う速度が最高速度になる
0814名前は開発中のものです。
2013/12/03(火) 21:11:08.82ID:0MeippoDをなくすための方便だって話だろ?
「なんで自由落下してこれ以上加速しないの?」
A1「マスを突き抜けないための措置です」
A2「空気抵抗のためです」
0815名前は開発中のものです。
2013/12/03(火) 21:25:56.29ID:CdE0TPl50816名前は開発中のものです。
2013/12/03(火) 22:22:19.41ID:OSLaknzQ0817名前は開発中のものです。
2013/12/03(火) 22:33:24.53ID:CdE0TPl5単純な話なのに、なんでそんなに頭が固いの?
0818816
2013/12/03(火) 22:50:50.54ID:Wgs9ad3o俺の実装してる判定方法(>>814よりの方法?)だと何をいってるのかわからん
0820名前は開発中のものです。
2013/12/04(水) 20:33:44.80ID:uXnUTzSupow += gravity;
Y = gravity * sinf(pow * PI / 180.0f);
jump=初速度
gravity=重力
Y=Y座標
こんな感じですが全くうまくいきません
0821名前は開発中のものです。
2013/12/04(水) 20:41:03.13ID:uXnUTzSu0822名前は開発中のものです。
2013/12/04(水) 21:48:17.05ID:zhmk3I91そこに書かれてる処理って、
・角度(degree)に重力値を加算
・重力*sin(角度(ラジアン))がY位置
重力値に9.87とか放り込んで計算したら、
びよんびよんと高速で上下にワープ移動するような結果にならね?
試してないけど、書かれてる内容的に。
0823名前は開発中のものです。
2013/12/04(水) 22:22:02.95ID:uXnUTzSu確かに・・・
player.Y += player.jumppow;
player.jumppow -= func.Gravity;
これでもジャンプ力50.0fの重力1.0fなら良い動きをするんですが
少し数字が変わると慣性が無くなったような動きになってしまいます
初速度と重力だけで作るのは無謀でしょうか?
0824名前は開発中のものです。
2013/12/04(水) 23:28:51.48ID:VBAqiQA30825名前は開発中のものです。
2013/12/05(木) 00:32:12.50ID:Q4Rc5btOその計算ならだいたいどんな値でも放物線えがくと思うけど
慣性の無くなったような動きってどうなんの?
0826名前は開発中のものです。
2013/12/05(木) 00:41:26.05ID:3lI4/blgアクション的には>>823だとけっこうジャンプ攻撃とかで不都合が
0827名前は開発中のものです。
2013/12/05(木) 01:30:24.26ID:rLfi/fFd問題なくね?
0828名前は開発中のものです。
2013/12/07(土) 18:26:51.50ID:MMdokQyYプレステ型のゲームパッドのボタン番号と、実際のプレステコントローラの
一番一般的な番号対応とかあるのかな?
俺の手持ちは2つでどちらもエレコムだけど、それだけで既に相違がある。
1つめはエレコムのUSBパッドで、ボタンに印字されてる番号は1から振られてるけどプログラム的には0から始まってる
0 □
1 △
2 ×
3 ○
4 L1
5 R1
6 L2
7 R2
8 セレクト
9 スタート
10 L3
11 R3
0829名前は開発中のものです。
2013/12/07(土) 18:35:12.79ID:OB9AL6AG製品ごとの対応データベースでもどこかにあれば良いんだけどね
0830名前は開発中のものです。
2013/12/07(土) 18:37:01.46ID:MMdokQyYLRの1と2が逆だったり、スタートとセレクトが逆だったりする
もちろんキーコンフィグはアリにするんだけど
デフォルトでさっくり操作できた方が気持ちいと思うんだよね
0831名前は開発中のものです。
2013/12/07(土) 18:39:27.15ID:MMdokQyY更新してなかった、ありがとう。
このへん標準みたいなのがあるとすごくありがたいんだけどねー
あとは、ちょっとこれとは話は違うけど、パッド操作をキーボードに割り当てる場合の
標準とかも欲しいよね。まぁそこはツクールに合わせればいいのかな?
0832名前は開発中のものです。
2013/12/08(日) 10:16:23.14ID:3chX2MBAところでキャラクターのstate処理を作りたいんだけど、
キー受付やジャンプ処理みたいなループ処理の部分の最初にstate=0(棒立ち)を書いてて
当たり前だけどキー操作してないとき(ジャンプ中や攻撃中)は強制的に棒立ちになっちゃうんだけどどう書いたらいいんだろう
最初に問答無用でstate0にしてるのがダメなのかな
0833名前は開発中のものです。
2013/12/08(日) 10:34:07.34ID:1DUlwM7E0834名前は開発中のものです。
2013/12/08(日) 10:52:48.31ID:3chX2MBA前のstateにしておくと止まってるのに移動モーションになったり
キー押し続けて移動してる状態から元に戻ったときの判定ができてないだけなんだけどどう組んだらいいのか・・・
0835名前は開発中のものです。
2013/12/08(日) 11:33:46.30ID:1DUlwM7E「棒立ち中」にキーが押されれば「移動中」にする、じゃだめなのかよ。
処理の最初に状態を棒立ちに強制リセットしたら、いま移動中なのか棒立ち中なのかジャンプ中なのかわからんじゃないか。
0836名前は開発中のものです。
2013/12/08(日) 23:44:46.06ID:+CLlR05t初期値を棒立ちにする
同じように見えて違う
0837名前は開発中のものです。
2013/12/09(月) 00:01:22.24ID:29rPv9PPごめんググったりしても分からなかった
>>836
その何も押されていないって判定難しいんだよね
というか他の行動中も棒立ちになっちゃダメだし
0838名前は開発中のものです。
2013/12/09(月) 01:40:57.14ID:qdYgEstIこちらこそごめん。君が何を悩んでるのか解らない。
例えば、stateが「棒立ち」「ジャンプ」「移動中」の3種類があったとして
switch ( state ) {
case 棒立ち :
ジャンプボタン押されてたらstateをジャンプへ
移動キー押されてたら stateを移動中へ
case ジャンプ
地面に着地したらstateを棒立ちへ
case 移動中
ジャンプボタン押されてたらstateをジャンプへ
キー入力がなければ棒立ちへ
}
(breakは略)
ってやりゃ済む問題じゃないの?
0839名前は開発中のものです。
2013/12/09(月) 03:05:19.23ID:rlztm+ll一部根本から設計変えるはめになった
new Class[n](a)とかやらせてくれよ
0840名前は開発中のものです。
2013/12/09(月) 08:02:12.07ID:29rPv9PPごめん馬鹿過ぎました
なんでstateでswitch使うのを考えられなかったんだ・・・わざわざありがとう
0841名前は開発中のものです。
2013/12/09(月) 08:49:45.29ID:wjGeHw450842名前は開発中のものです。
2013/12/09(月) 10:54:59.37ID:a6QlYFtU0843名前は開発中のものです。
2013/12/09(月) 11:17:06.67ID:wjGeHw45立ちstateの最初に立ちモーション、ジャンプstateの最初にジャンプモーション
前フレームのoldstateでも作っておけば多分大丈夫
しかしstate関連は抽象的だからググっても出でこないしゲームプログラム本買うしかないか
0844名前は開発中のものです。
2013/12/09(月) 12:14:22.21ID:ujMWB8vsアクションゲーム作るのに重要だと思うのに解説してるサイトってほんと少ない
0845名前は開発中のものです。
2013/12/11(水) 05:58:07.78ID:EB08S8JC0846名前は開発中のものです。
2013/12/13(金) 16:12:45.26ID:1zN0lg6G素直に2013でいいの?
それとも使用されてる期間や人数が少ない最新版は避けて1つ手前の2012?
あるいは入門書とかにくっついてる2008や2010を本を見ながらやるのがいい?
0847名前は開発中のものです。
2013/12/13(金) 16:53:01.16ID:yPXDpUWi基本的に最新版の方が良いが、特定の関数とか定数が削除されたりすることもあるのでその場合考えると入門書とかにくっ付いてるやつが何も考えなくていいと思う
ただ、個人的お勧めは2010だけどな
2012だとDirectX使ってデバッグしててどっかで止まるとOSハングしてると思うんだけどそれがクソ長くてな・・・
まぁ2010でも有るけど本当に少しの間だけだしそんなに問題ないと思う
0848名前は開発中のものです。
2013/12/13(金) 16:55:16.40ID:yPXDpUWi学校の先生の話だがコンパイル時の最適化はたぶん一番良いが、それ以外が駄目過ぎて嫌だし、業界ではあまり使われて無いから学校では教えるのはVisualStudioにしてるって言ってた
0849名前は開発中のものです。
2013/12/13(金) 16:55:35.52ID:ZOsgrDk9参考にしてる本が2010で解説してるなら、2010使った方がバージョン間の差で躓かないだろうからその方がいいだろうな。
別に躓いても何とかするわ、っていうなら2013。
2012と2013は全体的にマイナーバージョンアップって感じだし。(C++以外の部分でも)
2008は古すぎるので、これから初めて勉強するためのチョイスとしては微妙。
C++も言語的にだいぶ変わってるし。
0850名前は開発中のものです。
2013/12/13(金) 16:59:57.71ID:gwcCO4DL全部無料なんですから全て試してみて
一番使いやすいのを選べばいいでしょう
0851名前は開発中のものです。
2013/12/13(金) 17:12:47.40ID:1zN0lg6G非常に参考になるアドバイスありがとうございました
0852名前は開発中のものです。
2013/12/13(金) 17:14:16.94ID:qJKKwsuEIDE含めて一番出来が悪い
autoとか便利なのが使える2012以降が一番おすすめ
0853名前は開発中のものです。
2013/12/13(金) 17:21:03.28ID:ZOsgrDk9>2012だとDirectX使ってデバッグしててどっかで止まるとOSハングしてると思うんだけどそれがクソ長くてな・・・
同じ現象かどうかわからんのだけど、Win8+VS2012+DX11に変えてから、windowsキー無効化するのにLowLevelフックするコード入れたら、
ブレークポイントで停止がやたら重かったり、キーボードやマウスが操作困難になるくらい重くなる現象が起きるようになったな。
少なくともVista+2010+DX9で、そのWindowsキー無効化コード使ってたときは、そういうことは起きてなかったと思うんだが、
色々環境もコードも変え過ぎたせいでVS2012が原因かは不明だけど…。
0854名前は開発中のものです。
2013/12/13(金) 22:26:37.04ID:bZRU5jbh大盛り牛丼的なバランス感
■ このスレッドは過去ログ倉庫に格納されています