Windowsゲームプログラミング 質問スレ

レス数が950を超えています。1000を超えると書き込みができなくなります。
2008/11/06(木) 21:28:45ID:lNn2skuQ
※回答する人も、質問する人も必ず読んでください

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する香具師 】
・ どんな事で躓いているのか明確にしる。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
2012/07/15(日) 17:50:37.75ID:k2twrqrP
Cの基礎中の基礎だからスレ違い。
本読めばわかる基礎事項。ネットでもいい。
2012/07/15(日) 18:21:48.90ID:Ssv/RyLk
前に持ってくんじゃ無くてプロトタイプ宣言、な
902884
垢版 |
2012/07/15(日) 20:11:56.85ID:pX8TH0ip
>>900-901

ありがとう
903名前は開発中のものです。
垢版 |
2012/10/14(日) 15:39:36.82ID:2t+L3/5S
まだあるの?
2012/11/29(木) 11:36:58.44ID:TT/6t1IG
2d横スクロールアクションで敵がでる条件をプレイヤーの座標が例えば330以上340未満とかしようとおもってるんですけど、セオリーというか、普通はどう実装してるもんなんですか?
2012/11/29(木) 14:24:08.29ID:Gd8d17gU
そのままif文でそれをすればいいんじゃないの
2012/11/29(木) 15:19:33.36ID:JuWNVxeV
そういうのは外からパラメタ入れられるようにして可変にしとくといい。
テキストファイルとかでいいよ、難易度調整でコンパイルとかいちいちしてられないし
2012/11/29(木) 23:36:27.30ID:SnOSuGer
確かに難易度調整とか考えるとファイルから読み取ったほうがよさそうですね。
了解しました。ありがとうございます、
出現条件として座標だけだとうまく行かないかなーとか思ってほかの人は
どういう風にしてるのか気になったので質問させていただきました。
2013/01/28(月) 23:05:51.60ID:LkpC3c5z
>>840
こんな感じに作る。 次に、ゲームとして作るか、シュミレーションとして作るか
http://www1.axfc.net/uploader/so/2772187
2013/02/06(水) 21:10:56.84ID:1LghX5HE
ジョイスティックの状態を取得する処理を作っています。
joyGetPosExでハットスイッチの状態を取ろうと思ったのですが、一番目のハットスイッチしか取れません。
複数のハットスイッチの状態はどうやって取ればいいんでしょうか?

macでは出来るみたいでしたが、APIがわかりません・・
ttp://ysflight.in.coocan.jp/programming/macosx/joystick/j.html

デバイスはハットが4つあるvJoyの状態で練習しようと思ってます。
2013/02/06(水) 22:22:16.08ID:1LghX5HE
RegisterRawInputDevices → WM_INPUTで接続されてる全部のデバイスの入力を
捕まえることも考えています。(ハット4つついてる本物が要る)
2013/02/08(金) 02:27:37.66ID:aSO51vfl
それだけの情報じゃわからんな
フラグはちゃんと設定してんのかね
2013/02/08(金) 03:46:41.92ID:E0B8JHeU
変数を使った人数判定について
頭がこんがらがってしまったのでお知恵を拝借したい

Aさん Bさん Cさん

の3人のキャラがいたとします
それぞれのHPは5とします

それぞれに変数を用意して玉を当てると
+1加算するとして、変数が5になったらそれぞれは死にます(消えます)
一体一で戦っている時は、死亡判定は簡単です
それぞれの変数が5になれば死亡判定になります

ですが、3人同時に玉を当てれる技をもっていた時に、
それぞれの死亡判定を考えた時、頭が混乱しそうになります
例えば、
2013/02/08(金) 03:54:19.83ID:E0B8JHeU
まず、Aさんに玉を1つ当てましたAの変数は1です
この状態では、
A変数1 B変数0 C変数0 です

次に、3人同時に玉を当てれる技を使いました
すると、
A変数2 B変数1 C変数1 になります

次に、Aさんに玉を当てるとAの変数は3になります
A変数3 B変数1 C変数1 になります

次に、3人同時に玉を当ててる技を使った後に、Bさんに玉を1つ当てました
すると
A変数4 B変数3 C変数2 になります

さて、ここからが問題です
それぞれは、変数が5になったら死亡です

この状態で、3人同時に玉を当てれる技を連続で使った時、
Aさん → Bさん →Cさんの順に死んでいきます

この時の各変数(A〜Cさん)の死亡判定をするには
どのように、判定基準を定めればいいでしょうか?
2013/02/08(金) 04:02:00.39ID:E0B8JHeU
私が考えた案を提示します

まず、Aさんの変数が5になった時に、
A死亡判定変数に1を代入して、全滅変数に+1を加算
Bさんの変数が5になった時に、
B死亡判定変数に1を代入して、全滅変数に+1を加算

これで二人についての死亡判定は可能になりました
A死亡判定変数が1の時は、Aは死にBはまだ生きています
この状態で全員攻撃できる技を使えば、Bにだけに玉が当たります

次に、B死亡判定変数が1の時は、Bは死にAはまだ生きていますので
この状態で全員攻撃できる技を使えば、Aにだけ玉が当たります

そして、全滅変数が2の状態なら
全員攻撃できる技を出すが、誰にも玉は当たりません
この全員攻撃できる技は、画面内に表示している敵全員に
玉を当てれる誘導ミサイルだと思ってください
2013/02/08(金) 04:04:34.30ID:E0B8JHeU
2体だけが画面内にいるなら
この方法で、死亡判定が出来ます

ですが、この方法では、敵が3体になった時に無理が生じます

そこで私の質問ですが、
画面内に3体の敵がいて、
画面内に表示している敵全員に玉を当てれる誘導ミサイルのような技があった時
3体以上の死亡判定をさせるにはどうすれば可能でしょうか?
2013/02/08(金) 04:29:00.94ID:fc9kQ8/R
キャラがABCの3人いるとします。全部で3人です
変数が5になった時、死亡判定変数に1を代入するとします
また、誰かが死ぬと全滅変数に+1するとします

1.まず最初
A変数4 B変数3 C変数2の時→A死亡判定変数0 B死亡判定変数0 C死亡判定変数0 全滅変数0
 誰も死んでいない(変数が5でない)から、死亡判定変数は全員0のまま
 また、誰も死んでいないから全滅変数は0

2.次に全員に1ダメージずつ
A変数5 B変数4 C変数3の時→A死亡判定変数1 B死亡判定変数0 C死亡判定変数0 全滅変数1
 Aが死んだ(変数が5になった)から、Aの死亡判定変数を1にして、全滅変数に+1
 BとCは生きている(変数が5でない)から、死亡判定変数は0のまま

2.もう一度全員に1ダメージずつ
 ただし、さっき死んでいるAには当たらないとする
A変数5 B変数5 C変数4の時→A死亡判定変数1 B死亡判定変数1 C死亡判定変数0 全滅変数2
 Bが死んだ(変数が5になった)から、Bの死亡判定変数を1にして、全滅変数に+1
 Cは生きている(変数が5でない)から、死亡判定変数は0のまま

2.もう一度全員に1ダメージずつ
 ただし、さっき死んでいるAとBには当たらないとする
A変数5 B変数5 C変数5の時→A死亡判定変数1 B死亡判定変数1 C死亡判定変数1 全滅変数3
 Cが死んだ(変数が5になった)から、Cの死亡判定変数を1にして、全滅変数に+1

3.全員死んだか?
全滅変数は3、キャラの数は全部で3
数が同じなので、全員死んだということが確認できます
2013/02/08(金) 07:58:48.68ID:E0B8JHeU
>>916
助言ありがとうございます
あれから自分で考えて解くことが出来ました
条件分岐を多用して解決しました

全員の死亡判定変数は、使わないことにして
変数は、各、A,B,Cだけにして、値が5になった時が死亡です
そして、以下のように条件分岐を入れて解決です

A死んでる B死んでる C死んでる

A死んでる B死んでる C生きてる

A死んでる B生きてる C死んでる

A死んでる B生きてる C生きてる

A生きてる B死んでる C死んでる

A生きてる B死んでる C生きてる

A生きてる B生きてる C死んでる

A生きてる B生きてる B生きてる
2013/02/08(金) 09:50:16.18ID:ywDoLpsd
死んでも当たるようにして
A7 B6 C5 とか変数の上限取っ払えばいいんじゃね?

全滅判定とか死亡判定とかミサイル射撃のルーチンに必要ない

最後に変数5以上で死亡判定、全員変数5以上で全滅判定で終わり
2013/02/08(金) 20:00:08.33ID:y/f0Cgv2
>>911
dwFlagsにはJOY_RETURNALLを入れ、結果としてJOYINFOEX構造体のdwPOVには
中央=-1 上=0 右=9000 下= 18000 左=27000 が格納されており、ハットスイッチ1個めについては動作しています。
dwFlags=JOY_RETURNPOVの場合も変わりありません。
920名前は開発中のものです。
垢版 |
2013/02/14(木) 10:58:51.10ID:31/XymZq
質問です。

DirectX9についてです。
fourccフォーマット(D3DFMT_DXT1など)のテクスチャデバイスを
レンダターゲットとして使うことって、普通はやらないものでしょうか?
画質の面以外での不都合などがあれば教えていただけないでしょうか。

VRAM使用量削減のためこういうことをやろうと思っているのですが、
そういった使用例を見たことも聞いたことも無く…
すみませんがお願いいたします。
2013/02/14(木) 12:14:17.91ID:reIQ62Lt
そもそもレンダーターゲットとして圧縮フォーマットが
使えるグラボがどれだけあるのか確認した?
922名前は開発中のものです。
垢版 |
2013/02/18(月) 12:09:12.56ID:jl25J9BU
>>921
お返事遅くなりすみません。
dxinfoというサイトを知り、そちらで確認しましたところ、
圧縮フォーマットをレンダターゲットにできるデバイスは皆無でした。
自分の所有するものでも調べましたが全滅でした。

こういうことだったのですね…無知でした。
一旦32bitテクスチャにレンダリングしたものを変換するという方法にて
正攻法で行きたいと思います。大変ありがとうございました。
2013/03/05(火) 20:13:11.31ID:rD+66rZs
質問です。
エアロのDWMでフォームを透過にしたら、そこに乗ってる画像も透過になってしまうんですが
画像が透過にならない方法を教えてくださいm(__)m

エアロのDWM使って透過にする方法は色々あるようですが、ググってでた「DrawGlassEffect」てコードを使ってフォームを透過させました。
背景色を黒くすると黒い部分が透過になる仕組みなんですが、ラベルやボタンの黒い文字も透過になり、
画像に関しては黒い部分は透明、暗い色ほど透明が強く明るい色ほど不透明、というゴースト状態になります。

矩形なら、透過にしない境界を作ることによって不透明にできるようですが
なにぶん不定型な画像なので・・・マスク画像を作って貼っても、黒い部分が透過になってしまい意味がありませんでした。
アルファチャンネル付きの透過GIF画像でも同じくゴースト状態です。

どうぞご教授願いますm(__)m
2013/03/15(金) 01:23:30.12ID:gQQUpGxz
2Dのクォータービューゲームをつくろうと思ってたのですが
とある3Dゲームで見た事がある、『物陰に隠れたキャラクタをシルエット表示する』方法を考えていたのですが
考えてもまるで実装の仕方がわかりません

そもそもスプライトの表示順でどうにかなるのでしょうか?
2013/03/15(金) 01:36:29.65ID:89zaierS
シルエットはキャラの上に非表示で重ねておけば?
物陰に隠れた→シルエット表示
出た→非表示
2013/03/15(金) 18:42:53.28ID:oQGzchb4
シルエットってどの程度の表現なのかによるんじゃね。
真っ黒にしろ薄暗くするにしろ、キャラのマスク画像の透明度を変えてかぶせる方式。
隠れるオブジェクト側に半透明の影画像を付けておく方式。
影っぽい光彩画像(////みたいな)を作って、それをキャラにかぶせる方式。
2013/03/28(木) 13:51:54.93ID:3yAcGHY+
セーブデータの保存場所はどこが標準?
2013/03/28(木) 14:40:11.39ID:vViAZCV3
>>927
そのゲーム作った人が決めた場所
2013/03/29(金) 01:32:02.27ID:caLU/skX
>>927
まぁ、>>928が正解なんだがw

ユーザごとのドキュメントフォルダを取得し、
その下に配置するのが現代的と思われる。
マルチユーザを意識しないとね。
2013/04/08(月) 17:05:33.61ID:E5j8lfly
質問する場所が違っていたらすみません。

DirectShowを使用して動画の速度を変化させたいのですが
変化させるたびに0フレームから動画が再生されてしまいます。
AVI形式ですと、途中からでも速度がシームレスに変わるのですが
映像の容量が大きくなってしまうので悩んでいます。
なにか解決方法はありますでしょうか?
できればDirectShowを使う前提でお願い致します。
931名前は開発中のものです。
垢版 |
2013/04/14(日) 21:50:09.04ID:uAbXx+sS
 
932名前は開発中のものです。
垢版 |
2013/12/01(日) 11:59:05.28ID:SDLB2Fq5
2Dアクションゲームを製作しております。

リフト(動く足場)の実装を試みたのですが、問題に突き当たってしまいました。
まず、下降中のリフト(判定は上下左右 全方向にあるものとする)に対して、キャラクターが下からジャンプをし、リフトの下側(天井)へ衝突したとします。
その後 キャラクターの位置を補正し、縦方向の加速度を0にする。といった処理を行っているのですが、そのまま 天井へくっついてしまう。といった事態が発生してしまいます。
これは、衝突後 キャラクターの縦加速度を0にしたのち、そこから再度重力加算を行っているため、リフトの下降移動量がその数値よりも上回っている場合 再度衝突が起こり、再び キャラクターの縦加速度が0へ。
といったことが繰り返されているために、このような状況に陥っているものかと思われます。
この場合、どういった対処が考えられるでしょうか。

皆様のお知恵をお貸ししていただきたく思います。よろしくお願いします。
2013/12/01(日) 13:51:45.48ID:5ZkCO8Ug
下降中なら加速度を補正するのを止めれば良いんじゃね。
速度の補正も正確には0にするんじゃなくて、リフトの速度に
合せるべきかも。
2013/12/01(日) 23:33:12.67ID:mI3qZrzT
んー。
頭上の判定は「上昇中」のみ行い、「下降中」は足元の判定だけにするとかダメかな。
2013/12/02(月) 11:45:56.37ID:RBLi15dp
当たり判定を、静止物体、移動物体、そして
可動プラットフォームなどと場合分けする。
エレベーターの場合は、
エレベーターの移動と自分の移動の合成の相対速度になる。
936名前は開発中のものです。
垢版 |
2013/12/02(月) 16:30:01.06ID:Xw3mpRsD
天井に当たる直前のキャラクターのベクトルは、天井に当たった事で反射すると考えれば、
縦方向のベクトルを符号逆にして、それに重力加えるので良いような気がする

一回、無重力状態での挙動で整理してみて、そこに重力を加える処理でどうかな?
937932
垢版 |
2013/12/02(月) 18:26:10.30ID:Wij17DF+
>>933-936
こんなにも沢山の方々の目に留まるとは思っていませんでしたので、大変恐縮です。
皆様、様々なご意見を賜り 本当にありがとうございます。
非常に参考になりますm(_ _)m

ご指摘を受け、可動物への衝突時に 加速度を0へ補正する事への違和感に気が付きました。
今回は、ひとまず 下降中のリフトの速度へと合わせる方法をとることとしました。

『Windowsゲームプログラミング』といった趣旨とは 直接的には関係無いにも関わらず、沢山のご意見 ありがとうございました。
2013/12/20(金) 23:44:33.92ID:G1FVNCnk
プログラミングまったく未経験の者です。
対戦ゲームだと難しいAIを組まないといけないでしょうから、一人用のウォー・ボードゲームを電子化し、
本来はサイコロを振ってチャートを参照して結果を実行するのをコンピューターに処理させる
ぐらいのことをしたいのですが、それをやるのに十分かつ適切な初心者向きのプログラミングがあれば教えてください。
939名前は開発中のものです。
垢版 |
2013/12/21(土) 00:33:43.33ID:pghB6HLo
>>938
戦略シュミレーションゲーム。
THE FLEET COMMANDER
http://www1.axfc.net/uploader/Sc/so/165961

こんな感じのを作りたいのですか?
940938
垢版 |
2013/12/21(土) 04:17:01.14ID:L3dtKLD+
>>939
ぼんやりとイメージしているのはスゴロクに近いかもしれません。
ターン(マス)を進め、そのたびにサイコロを振る。その出目に従ってイベントや戦闘が起きる。
そのイベントや戦闘もサイコロの出目で解決される。イベントや戦闘の結果ごとに特定の効果音や動画が再生されるようにする。

これだけのことを初心者でもわかりやすくプログラミングしようと思えば、何が向いているのでしょうか?
2013/12/21(土) 10:51:33.99ID:fuA00Ikt
仕様が複雑なのでどんな言語や開発環境をもってしても複雑なプログラミングにしかならないよ。
とりあえずHSPおすすめ。
2013/12/21(土) 11:09:21.41ID:XhLY4ORi
スゴロクですか、
ひとりゲームでも拡張して、
AI追加や、マルチプレー、ネットゲームの可能性も有るでしょう。
わりと単純だからどのプログラム言語でも出来ると思う。

インタプリタ系がかんたんです。
HSP言語やBASIC言語になるだろう。
エクセルVBAはBASIC言語です。

汎用的に使われるのがC言語で、
最近の言語はC言語の発展形になります。
C言語とDXライブラリが初心者向けに推薦できます。
そしてすこし大きいプログラムになっても対応できます。

あなたのプログラム技能次第ですから、
本を買ってプログラムを行ってみてください。
人には、向き不向きがあるので、あなたが
プログラミングに向いているかどうかを試す必要があります。
943938
垢版 |
2013/12/21(土) 12:26:27.18ID:L3dtKLD+
レスありがとうございます。
とりあえずHSPのゲームプログラミング入門本を見てみます。
アマゾンでプログラミングの本を検索しているとJavaの本があったんですが、
やはりJavaよりHSPの方が初心者には扱いやすいですか?
2013/12/21(土) 12:44:30.62ID:jT9p6BYS
プログラム言語はひとつだけを使うのではなくて
用途に応じて言語を使い分けるものです。
HSPも小さいプログラムならば悪くないですが、
ちょっと大きいプログラムになると辛くなります。
そこで、最初はHSPで初めて、
ちょっと慣れてきたらJavaを始めるのも良いでしょう。
945938
垢版 |
2013/12/21(土) 13:04:38.53ID:L3dtKLD+
なるほど。
おかげで学習の方向性が定まってきました。
ありがとうございました。
2013/12/23(月) 11:25:45.36ID:v1muKMwi
言語云々よりシステムデザインをはっきりさせたほうがよい
まだボードゲームとして具体化できていないならすぐ頓挫する
947938
垢版 |
2013/12/23(月) 12:13:42.21ID:9Ns4UZP8
>>946
その通りだと思います。
今はお気に入りの市販のソリティアボードゲームを
PCに移植・稼働させることを目標に、プログラミングの学習をしたいと思います。

それだけの技術が付いてから、例えば数値だけいじってみたり、
まったく同じシステム・ゲームデザインで新しいゲームを作ってみたり、
自分なりに工夫・発展させたデザインでゲームを作れるようになるのが究極の目標です。
948名前は開発中のものです。
垢版 |
2013/12/25(水) 10:10:55.40ID:qv/UYG/P
ウォーシミュならAIは難しそうだけど、一定のアルゴリズムで動くCP対戦の方が作るの面白そうだ
一定の範囲を索敵して敵の近くに移動
攻撃範囲に敵が居る→攻撃
FEみたいなのならファミコンの時代からあるんだし、何とかなるんじゃね?
2013/12/25(水) 22:20:20.10ID:j1ogVw80
ウォーシミュの対CPU戦なんて、バカなAIをハメて無双するのが楽しいんだから凝ったAIなんて不要w
2013/12/26(木) 00:30:35.98ID:PmXogz09
ハメて勝った気分になるためには最低でも相手が考えてい動いているように見える必要がある
某市販ゲーをやってたときに「ミスった!後一撃でやられる、オワタ!」という状況で
至近にいる敵が明後日の方に進んだのを見てやる気が失せた
2013/12/26(木) 01:21:13.97ID:IL/DzEfa
ファイアーエンブレム系で各個撃破されないように行動したり、
孤立して死にかけの敵を確実に削りに来るようなAI持ったゲームある?
2013/12/30(月) 08:55:48.27ID:96TyUHbJ
あるだろうけど、基本的にプレイヤーと同じ縛りで動かすから
あまりえげつないことはできないよ
2013/12/30(月) 11:58:01.75ID:evW3WY59
死んだら即キャラロストなゲームの場合
敵軍としてはステージ中に主力を一人倒せば目標達成だから
プレイヤー側の方が条件としては圧倒的に不利
軍同士の実力が拮抗していて思考ルーチンが優秀なら
プレイヤーはいくつかステージを進んだところで詰む
2013/12/30(月) 21:40:11.21ID:PUCe57VA
そうそう。だから「詰将棋」になっちゃうんだよね。

「ある場所にいったら新キャラをゲットできる」って条件があったとすると
それをできなかった場合ってのはキャラをロストしたのと同じ事になるから
必ず手に入れなくてはいけないわけで、
「キャラを確実に手に入れて」かつ「キャラロストさせない」って手順を追及すると
最適解がしぼられてきちゃって面白くない。
2014/02/02(日) 12:52:34.59ID:Q1gdN1n6
>>951
FE系じゃないけど、AoEはその傾向があったね
FE系だと固まって射程距離ぎりぎりでチクチクが一番効率いいんじゃね
大戦略みたいに都市占領や生産の要素があると
将棋より囲碁のような大局観のほうが大事

>>954
ロストしても楽しめるバランスならいいと思うけどね
全キャラ生還なんて縛りプレイはやりたい奴が勝手にやればいいと思う
FEは今のAIやゲームバランスの上で成り立ってる特別な例
2014/02/14(金) 12:38:40.56ID:y8xuE92m
死ぬまで戦わせずに士気判定入れてさ、逃亡始めたり恐慌状態で動けなくなったりして戦線の維持ができなくなった時点で
ほぼ負けが確定する、みたいなゲームシステムってないのかな?ゲームバランスが問題なら。
2014/02/17(月) 20:35:43.54ID:XkkD0G38
体力の代わりに士気にすりゃいいだけじゃん?

むかーしPC-98のゲームでそういう「士気」を取り入れたシステムのシミュレーションあったけど
特に普通と変わったところはなかったよ。
2014/02/23(日) 16:19:12.47ID:FZeL0B+w
ユニットが恐慌状態になって
コントロール不能かつ周囲の味方を巻き込んだりすると面白い

だが往々にして"回復"スキルであっさり解消されてつまらなくなる
959名前は開発中のものです。
垢版 |
2016/05/17(火) 13:51:07.05ID:hrllpx6V
皆さん頑張ってますね、私も頑張らねば
2016/05/17(火) 19:39:30.49ID:XNH4Q6MU
>>957
士気システムだと兵数差をひっくり返しやすい代わりに
撃退した敵がそのままの兵数で何度も襲来してきて苦しい
961名前は開発中のものです。
垢版 |
2016/06/26(日) 16:25:48.03ID:zBPiB+aF
                 【Win10】     開示する ここ重要だよ     【スパイウェア】


この使用許諾契約書には書かれています
”最後にあなたのコンテンツを含む個人データ(例えばあなたの電子メールの内容や―プライベート通信やプライベートフォルダ内のファイル)にアクセスし―開示し保全します”
開示する ここ重要だよ
契約がなければ通常 高度な違法行為になりうることです それはあなたが自分の意思としてこの契約書に同意したのです
https://www.youtube.com/watch?v=ZBwEmgdqB1c



                 【橋下市長】   バスの運転手が年収1000万円   【自民+民進+共産】


「1910」 副島隆彦 2016年6月16日
大阪市や大阪府のバスの運転手が年収1000万円は許せない、600万円まで落とすと。何でバスの運転手が1000万円ももらえるんだと。
これを正面から本気でやったらほんとに橋下はたたき潰されました。安倍晋三たちも、これを言われると日本の民主党や共産党は非常に困るんです。
962名前は開発中のものです。
垢版 |
2016/11/25(金) 21:28:10.12ID:3YCOW6Rq
age
963名前は開発中のものです。
垢版 |
2016/11/29(火) 20:12:15.57ID:J1Ekj/Ze
現在、Vector3 から緯度・経度を算出する関数を作成しています。
Vector3 Math::Vector3::TranslateGeoCoords( F32 _fLat, F32 _fLong, F32 _fAlt )
{
Vector3 ret;
ret.x = _fAlt * cosf( _fLong ) * cosf( _fLat );
ret.y = _fAlt * sinf( _fLong ) * cosf( _fLat );
ret.z = _fAlt * sinf( _fLat );
return ret;
}
void Math::Vector3::GetGeoCoords( F32& _fLat, F32& _fLong, F32& _fAlt, Vector3 v )
{
_fAlt = v.Length();
_fLat = asinf( v.z / _fAlt );
_fLong = atan2f( v.y, v.x );
}
といった関数をつくりました。

{
F32 lat, long, alt;
Vector3 v = TranslateGeoCoords( -1.57079637, -0.392699003, 1.0f );
GetGeoCoords( lat, long, alt, v );
}
とした際に longの値が 入力した値と違った値が返る時があります(この場合ですと、2.74889374 と言った値がかえってきます) 。

longの計算方法が間違っているのはわかっているのですが、 正しい方法がわかりません。
誰かご教授お願い致します。
2016/11/30(水) 05:53:16.15ID:weGFa962
±90°はヤバイ
2016/12/01(木) 01:58:43.88ID:EciSCQ3Q
>>963
その座標ってほぼ極点じゃないか
2016/12/01(木) 03:47:43.75ID:6pEo0nQM
>>963
もう解決してるかもしれないけど、これで出せる
公式への当てはめがおかしかっただけだな

void TranslateGeoCoords( F32 _fLat, F32 _fLong, F32 _fAlt )
{
Vector3 ret;
ret.x = _fAlt * cosf( _fLong ) * cosf( _fLat );
ret.y = _fAlt * cosf( _fLong ) * sinf( _fLat );
ret.z = _fAlt * sinf( _fLong );
return ret;
}

void GetGeoCoords( F32& _fLat, F32& _fLong, F32& _fAlt, Vector3 v )
{
_fAlt = v.Length();
_fLat = atan2f( v.y, v.x );
_fLong = asinf( v.z / _fAlt );
}
967名前は開発中のものです。
垢版 |
2016/12/05(月) 10:56:05.09ID:IU19FSHR
963です。
情報ありがとうございました!
Vector3 Math::Vector3::TranslateGeoCoords( F32 _fLat, F32 _fLong, F32 _fAlt )
{
_fLat = CLAMP( _fLat, -PI * 0.5f + sc_fThreshold, PI * 0.5f - sc_fThreshold );
_fLong = CLAMP( _fLong, -PI * 1.0f + sc_fThreshold, PI * 1.0f - sc_fThreshold );
if( fabs( _fLat ) > PI / 2 - sc_fThreshold )_fLong = 0.0f; // 極点付近だと Long は正常な値が出せない
return Vector3( _fAlt * cosf( _fLong ) * cosf( _fLat ), _fAlt * sinf( _fLong ) * cosf( _fLat ), _fAlt * sinf( _fLat ) );
}
void Math::Vector3::GetGeoCoords( F32& _fLat, F32& _fLong, F32& _fAlt, Vector3 v )
{
_fAlt = v.Length();
_fLat = asinf( v.z / _fAlt );
_fLong = atanf( v.y / v.x );
if( fabs( _fLat ) > PI / 2 - sc_fThreshold )_fLong = 0; // 極点付近だと Long は正常な値が出せない
else if( v.x < 0 )
{
if( v.y < 0 ) _fLong = -PI + _fLong;
else _fLong = PI + _fLong;
}
else if( v.y < 0 ) _fLong = PI + _fLong;
}
このような形でできあがりました。
何か間違っている所等が御座いましたらご指摘お願い致します!
968名前は開発中のものです。
垢版 |
2017/01/31(火) 20:49:50.24ID:/uuuWXAW
はぁ
969名前は開発中のものです。 転載ダメ©2ch.net
垢版 |
2017/02/06(月) 23:29:46.03ID:HTgetRF5

板復帰(OK!:Gather .dat file OK:moving DAT 701 -> 695:Get subject.txt OK:Check subject.txt 701 -> 701:Overwrite OK)1.43, 1.75, 1.82
age subject:701 dat:695 rebuild OK!
970名前は開発中のものです。
垢版 |
2017/02/07(火) 10:54:09.62ID:DUjb6E6x
https://www.youtube.com/watch?v=quIHgwuF6r4&;sns=em
2017/03/14(火) 22:31:17.39ID:uWtM+u6B
プログラミングまったく未経験の者です。
簡単に言えばPSの初代デジモンワールドの2Dドット版のようなゲームを作りたいのですが、それをやるのに適切な初心者向きのプログラミングの参考書やサイトがあれば教えてください。
2017/06/11(日) 21:09:55.01ID:TCJX3Ivg
いままでゲームデータの管理をxmlでやってたんだけど、いい加減量が多くなってきたしテキストエディタでの編集大変だしデザイナーに任せられないし、excelに移行しようかと思うんだが、
手持ちのデータをどういうふうにexcel化というかデータベース化したらいいのか謎すぎる。

アニメパラメータとか、キャラクター毎、レベル毎の能力値とか。

キャラクターごとにファイル分けてるのか、1シート1キャラクターみたいにやってるのか、はたまた1シートに全部のデータをつっこんでるのか、表は縦軸に何をおいて横軸にどんな項目を置いてるのか、他のexcel使ってるゲームがどんな風に管理してるのか見てみたい。

どこかに実例ない??
うちのゲームはこんなexcel表でやってます、みたいな。参考にしたい
973名前は開発中のものです。
垢版 |
2017/12/31(日) 19:45:40.04ID:/rN76OKL
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

LUP4Q9V496
レス数が950を超えています。1000を超えると書き込みができなくなります。