EasyFAQ/126

Last-modified: 2010-01-31 (日) 00:44:56

射撃について

投稿者ぶり
重要度
状態
カテゴリ
HSPバージョン
E3Dバージョン
回答

ここから下を自由に編集してください。
上の投稿情報は安易に編集するとFAQリストのリストアップに支障が出るものもあります。
よく分からない方は分かる人に聞いてみてください。

  • 早速質問ですが、一人称の視点で、射撃処理をしたいんですが画面にスプライトを表示させマウスクリックしスプライトと重なっていればダメージ処理をするって感じにしたいんですが、スプライトが敵と重なっているときは処理に入るという形ができません -- ぶり? 2010-01-30 (土) 15:19:15
  • こんにちは。
    >スプライトが敵と重なっているときは処理に入るという形ができません
    えーっと。この部分がよくわからないです。
    おそらくFPSのマウスルックと言われる操作方法のお話ですね。
    照準マークのスプライトを画面中央に固定し、マウスのX,Y座標をキャラクターのY,Xロールに反映。
    命中変数を用意しておき、E3DGetScreenPos系の関数でモデルの2D座標を得て、スプライトと重なれば命中変数にロックオン状態。
    これにマウスクリックの情報が加われば当たった事になるのでは?
    あるいはE3DPickFace系で2D→3Dもできます。
    これらは初期のFPSのスタイルのようで、最近は単純に弾を撃つ方が多いそうですが。
    その弾の発射やその後の当たり判定のお話でしょうか??? -- スイートポテト? 2010-01-30 (土) 15:55:40
  • 確かにわけのわからない質問でした^^;でもこんなに丁寧に答えてくれるなんてうれしいです、もういちどねんのためわかりやすくもっと詳しく書いておきます(すみません最初から書いておけばいいのですが;;)。私はFPSを作っていてターゲット(十字のマーク)をスプライトで表示していますそれをマウスを非表示にして毎回の移動量に対応して回転するようになっているのですが、弾を打つモーションと一緒に弾のあたりの判定をしたいのですが最初に考えたのはE3DGetScreenPos系の関数でモデルに中心座標を取得しスプライトの2D座標と同じならば当たったとみなしてダメージを与えるというものでした、でもこれだと心臓部をピンポイントで狙うようなものなのでそれではちょっとあれなので、どうすればいいか悩んでいます、かといって2Dの座標に数字を足してあたりの範囲を広げてしまうと敵が小さく表示されていると命中率が上がってしまうので・・・・、そこでですが>最近は単純に弾を撃つ方が多いそうですがとはどういう感じなんでしょうか? -- ぶり? 2010-01-30 (土) 21:25:28
  • 参考にしてください -- ぶり? 2010-01-30 (土) 22:47:35
  • こんな感じ -- ぶり? 2010-01-30 (土) 22:52:50
  • >でもこれだと心臓部をピンポイントで狙うようなものなのでそれではちょっとあれなので
    確かにそうですよね。
    距離に応じて相手のターゲットとしての大きさを変えるやり方を考えていたんですが、いっそ銃口から正面方向への線分で当たり判定する方が簡単かも知れませんね。
    ほら。ターミネーターで銃から赤いレーザー光線が出てましたよね。あんな感じで。
    引き金を引いた瞬間にその線が相手に当たっていたら「当たった!」って事で。
    具体的にはE3DChkConfLineAndFaceとE3DChkConfGroundPart2(飛ぶモード)を併用する事になるでしょうね。
    E3DChkConfLineAndFaceは結構重い処理との事ですが、引き金を引いた時の瞬間的な処理で済むので、ここでは重大な問題にはならないでしょう。
    むしろ当たったパーツや面や法線情報まで取得できるので、そこに弾が当たった跡を置く事も出来ますね。
    >そこでですが>最近は単純に弾を撃つ方が多いそうですがとはどういう感じなんでしょうか?
    銃なら弾の速度が速いので、上のやり方でほぼ瞬間的に当たり外れを判断しても問題ないですね。
    しかし、自分で火を噴いて飛んで行くロケット砲なんかは、距離が伸びても減速しないので、速度そのものはけっこう遅いそうです。
    距離によっては「あ!飛んできた!」と、見てから避けても間に合うようです。近くで爆発されたらたまったもんじゃないでしょうが。
    で、そう言う場合向けにキャラクターとは別にロケット砲弾をモデリングしておき、引き金を引いた瞬間の砲の位置と向きから独自に移動させるんです。
    最近のFPSは、なんかすごいらしいですから「9mmの有効射程距離は?」「ライフルは初速が速い」とかいろいろあると思います。
    結局ロケット砲のように弾を飛ばして、空気抵抗や風向きの影響を計算してるんじゃないかと思うんです。
    FPSにもいろいろあるので一概にはどうかわからないですけど。-- スイートポテト? 2010-01-30 (土) 23:00:24
  • アーなるほど、確かに線分の当たり判定が一番いいかもしれませんね。
    今回はカメラが1人称で助かりました、カメラは銃の中心から下がった位置にあ配置しているので今回はスイートポテトさんの言うとおりにすれば確実にできそうです。
    この質問に対してここまで答えてくださってありがとうございます、こんなに親切に真剣に考えてくれるとは思ってもいなかったです。またお世話になるときがあれば(お世話になるのは避けたいが(ーー)よろしくお願いします -- ぶり? 2010-01-31 (日) 00:44:24