HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0723
catsHGHITによる壁との当たり判定11解決


cats

リンク

2014/7/23(Wed) 20:55:17|NO.63047

現在hgimg3を使用して一人称3Dゲームを作っています。
そこで、壁との当たり判定にHGHITを使わせていただいています。
http://www.vector.co.jp/soft/winnt/prog/se483225.html
しかし、実際に使ってみると、壁との判定をしてくれません。
HGHITのサンプルに合わせた記述をし、3Dモデルも地面に対して90度に
しましたが、壁をすり抜けてしまいます。
以下にコードと3Dモデルなどをアップロードしました。
http://ux.getuploader.com/for_test_up/download/4/Test.zip
(MAIN.HSP=コード、etcフォルダに壁と床、テクスチャ)
どこかHGHITの使い方を間違えたでしょうか。
どなたか、間違いや別の方法など、ご教示お願いします。



この記事に返信する


mirage17

リンク

2014/7/23(Wed) 22:01:17|NO.63051

ソースまでは詳しく見てませんが、
Hghitより
XファイルはメタセコイアLE(R2.4辺り)から出力したものを使用してください。
原因は不明ですが、新しいバージョンから出力されたXファイルでは上手く判定を
行わないことがあるようです。との事。

メタセコイアLE R2.4(日本語)
は下記からダウンロードできます。
古いバージョンで、メタセコイアの公式サイトではないようですが、
使えるようです。

http://www.weeebs.com/software/metasequoia-1438.html
このバージョンでXファイルを作り、当たり判定プログラム
をいじって実行してみればいいかも。

もし、もう同じバージョンを入手していたらごめんなさい。



cats

リンク

2014/7/23(Wed) 22:28:42|NO.63054

>mirage17さん
ご回答ありがとうございます。
書くのを忘れていましたが、壁や床はMetasequoiaLE R2.4を使ったので
そこは問題無いと思います。
hgimg4がもっと使いやすくなるまでEasy3Dに戻そうかな。



mirage17

リンク

2014/7/23(Wed) 22:50:19|NO.63056

 今はxp、vista、7、8で使えるHSPのライブラリなどが、メインでしょうから、
HGIMG4のような7、8以降のような新しい技術がメインになって、本なども出るように
なるまでは、もうちょっと先でしょうから、それまではHGIMG3がメインでしょう。
アルトを制作された魔女オイラさんも、Hghitを使って克服して、アルト作ったみたいな事
書いてあったので、解決できなかったら、魔女オイラさんのホームページで、聞いてみては
どうでしょうか?具体的なソースの話になってなくてすいません。HGIMGにするか、
EASY3Dにするかはどちらもご存知な魔女オイラさんに相談してみればいい事あるかもよ。
(他力本願ですいません。)私自身も、HGIMG4がメインになるまでに、作曲を覚えようかと
思っているぐらいなので、まだまだHGIMG3使えると思います。情報も、HGIMG3なら
たくさん出ているから大丈夫では?



cats

リンク

2014/7/23(Wed) 23:02:52|NO.63057

>mirage17さん
なるほど、とりあえず原因が解明できるまでEasy3Dを使おうと思います。
HGIMGやその他3D描画プラグインなどが今後より発展してくれることを願います。
ありがとうございました。



暇人

リンク

2014/7/24(Thu) 00:33:34|NO.63062

とりあえず原因は分かった
hghit.hspのwallhit命令で
> #deffunc wallhit array ABN,var fx ,var fz,var px,var pz //壁データとの当たり判定を行う
> lx=abn(4,0,0)+absf(vx) :sx=abn(5,0,0)-absf(vx) : lz=abn(4,1,0)+absf(vz):sz=abn(5,1,0)-absf(vz)
パラメータはfx,fzなのに使用時はvx,vzになってて
> if (px<lx)&(px>sx)&(pz<lz)&(pz>sz){
この判定で弾かれて以降の判定がされていない(ワールド空間でxかz方向に平行だとすり抜ける)
なので

lx=abn(4,0,0)+absf(fx) :sx=abn(5,0,0)-absf(fx) : lz=abn(4,1,0)+absf(fz):sz=abn(5,1,0)-absf(fz)
にすれば良い



mirage17

リンク

2014/7/25(Fri) 13:59:52|NO.63087

 壁との当たり判定ですが、アルゴリズムや数式を覚えるのにいい本があるので
紹介しときます。プロを目指す学生さん用の本ですが、入学時に読む本なので、
理解しやすいと思い、掲載しときます。アルゴリズムや数式は、HSPを使っても、
実現可能だと思うので、いい勉強になるでしょう。
紹介する本はDirectXの本ですが、著者が作ったNEGAAというライブラリ
を使用する事で、ゲームのアルゴリズムを素早く覚えられるようにできています。
アルゴリズムを覚える前に挫折してしまっている人には、お勧めの本です。
では紹介します。

「ゲームプログラミング入門」 GAME PROGRAMMING PRIMER
(著)鎌田茂雄 (出版)Northbrain

なお、この本は、今の所、ノースブレインさんのサイトとアマゾン以外では取り扱ってない
ようです。つまり、一般の書店には置いていないようです。ゲーム学校などで、教材として、
この本が使われているようです。

この本の中に、障害物や敵と自機などの当たり判定及び迷路が、数学、物理の公式付きで、
載っているので、この本のアルゴリズムをマスターすれば、HSPでも、応用がきくと
思います。なお、プロを目指す場合は、最終的にはライブラリに頼らなくても作れる
レベルに達する事が必要ですが、HSP使いの場合、そこまで考える必要はないと思い、
C言語とライブラリNEGAAを使った本をあえて紹介した次第であります。

ただ、HGIMG3ではArueさんや、魔女オイラさんは、壁との衝突判定の壁
を自力で解決して、ゲームを作成されたとのホームページの情報がありましたので、
Hghitを改良する事で、この問題を解決できるのではないかと、推測できます。



cats

リンク

2014/7/25(Fri) 16:35:22|NO.63088

>mirage17さん
3Dについて勉強するのもよさそうですが、今はやりたいことがたくさんあるので
それはかなり後の事になりそうです。
学校の図書館にアルゴリズム、ゲームプログラミング系の本も大量に
あるので3Dの物も読んでみたいと思います。
とにかく、今回は機能が多いということもあってEasy3Dを使用してみます。



mirage17

リンク

2014/7/25(Fri) 16:46:53|NO.63089

 追記です。暇人さんの指摘通り、hghit.hspの該当部分を改良して、catsさんの
Testプログラムを実行した所、壁との衝突判定ができているように思います。
一部判定があまく、壁の向こう側が見える時もありましたが、壁際に沿う時もあり、
地面と壁との衝突判定が、HGIMG3の場合、事実上、できている事になるのでは
と思いました。壁判定プログラムの内容がわかれば、さらに、しっかりとした判定
もできる可能性もありますが、ひとまずは、暇人さんの指摘した箇所の修正で、
きっちり壁衝突判定する事を確認しました。



mirage17

リンク

2014/7/25(Fri) 19:00:40|NO.63094

追加情報です。牧歌的というブログで、hghit2が公開されています。
原作者Mackman氏の「hghitモジュール」を改良したものです。
サンプルもあり、衝突判定ができているようです。

また、アルトのonecoinsさん(魔女オイラさんの関係者)
は、Mackman氏より最新の改良版のhghitを入手
した事が、onecoinsさんのブログに書かれていました。

古いhghitの場合は、改良する事をしないと、ちゃんと動作
しないのかもしれません。

牧歌的 hghit2
http://bokkateki.seesaa.net/article/390420426.html



cats

リンク

2014/7/25(Fri) 22:45:52|NO.63099

>mirage17さん
HGHIT2が公開されていたとは驚きです!
ここまでも多くの有力な情報をくださり、本当にありがとうございます。
HGHIT2のサンプルは正常に動作したので、明日HGHIT2を組み込んでテストしてみます。
成功したら、引き続きHGIMG3でゲームを開発しようと思います。



cats

リンク

2014/7/26(Sat) 12:40:40|NO.63109

さきほどHGHIT2を組み込んでみたところ、
壁との当たり判定が正常に計算されました。
このままHGIMG3での開発をすることができます。
ご回答してくださった皆様、ありがとうございました!



ONION software Copyright 1997-2021(c) All rights reserved.