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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0510
名無三MV1CollCheck_Sphereの利用5未解決


名無三

リンク

2019/5/10(Fri) 17:49:09|NO.87289

DXlibのMV1CollCheck_Sphereを利用したいのですが、戻り値の構造体が

// コリジョン結果代入用ポリゴン配列 struct MV1_COLL_RESULT_POLY_DIM { // 当たったポリゴンの数 int HitNum ; // 当たったポリゴンの配列へのポインタ // ( 配列の要素数は HitNum です ) MV1_COLL_RESULT_POLY *Dim ; } ;
とされています。この場合どのようにすればMV1_COLL_RESULT_POLYの内容を取得できますか?



この記事に返信する


daichan

リンク

2019/5/11(Sat) 19:28:14|NO.87291

戻り値を要素数2の数値型配列で受け取り、dupptr のp1に配列の1番目、p2に0番目の要素を指定すればできると思います。



名無三

リンク

2019/5/11(Sat) 23:16:56|NO.87293

ありがとうございます、dupptrの存在をはじめて知りました…そんでもって構想を元に改良していた
ものです

https://drive.google.com/file/d/1f8hPM0M8qevkK-Kl1Q_q1Sux8cmDg3lf/view?usp=sharing

game_main内の40行目あたりにMV1CollCheck_Sphereが使用されているのですが、どうしても戻り値が
帰ってきません…



k

リンク

2019/5/13(Mon) 21:48:06|NO.87330

過去に c#用 dxライブラリで
MV1CollCheck_Sphereの戻り値を受け取るのは無理だと思っていたのですが

最近 C言語何でも質問掲示板で
https://dixq.net/forum/viewtopic.php?t=14675
という記事を見つけたのです
ただ 時間がないので 試していませんが・・・
hsp言語でもひょっとしたらできるかもしれないですね
時間ができれは私もやってみようかと思います



砂時 計

リンク

2019/5/18(Sat) 14:53:00|NO.87383

毎度解決方法じゃなくてすみません。

gamemain#L59 付近の //対床 の MV1CollCheck_Line では
期待どおり HitPoly(0) に 1 が格納されることがありますね。
そして HitPoly(1) 以降に展開されたデータが格納されてる雰囲気。

そこで if HitPoy(0)=1 { の中の player_add_y(cam_player) = 0.0 の直後に以下のコードを入れてみました。


HitPoly(0) = 0 HitPoly(1) = 0 MV1CollCheck_Sphere HitPoly, startpos(0),startpos(1),startpos(2), 10.0 dialog "HitPoly(0), " + HitPoly(0) #uselib "DxLib.dll" #func global _collsp "dx_MV1CollCheck_Sphere" int,int,float,float,float,float _collsp mapobj, 0, startpos(0),startpos(1),startpos(2), 10.0 dialog "stat, " + stat end

結果は HitPoly(0), 0 と stat, 2 が出ます。
なぜか Sphere の方は 2個 衝突という結果を返してくれません。謎ですね;;


いのびあさんの記事。
【HSP3】構造体を戻り値とするDXライブラリの関数をHSPで呼び出すテスト
https://codetter.com/?p=1192



k

リンク

2019/5/18(Sat) 20:48:19|NO.87395

>時間ができれは私もやってみようかと思います
ちょっとやってみましたが、やっぱりだめでした;;

ちなみに
#func global MV1CollCheck_Sphere "dx_MV1CollCheck_Sphere" var,int,int,float,float,float,float

#cfunc global MV1CollCheck_Sphere "dx_MV1CollCheck_Sphere" int,int,float,float,float,float
にすると

HitPolyDim=MV1CollCheck_Sphere(ModelHandle, -1, startpos(0),startpos(1),startpos(2), 10.0)

等で
なぜか当たったポリゴンの数は返ってくるのですが
肝心の当たったポリゴンの配列へのポインタが返ってこないのです



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