ありがとうございます
無事実行することができました
そして、手元で確認した限りでは block を block_bad に変更してもすり抜けませんでした
あと、手元で以下のようなプログラムを組んで block_bad\\b_1\\model.mv1 に対して上から
下方向に向かう線分で当たり判定を行ってみましたが、正常に天辺と当たりました
<実行結果のスクリーンショット>
https://dxlib.xsrv.jp/temp/MV1CollCheck_LineTest.png
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int Model ;
// ウィンドウモードで起動
ChangeWindowMode( TRUE ) ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// モデルの読み込み
Model = MV1LoadModel( "mcraft\\TankFlanker\\TankFlanker\\data\\block_bad\\b_1\\model.mv1" ) ;
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// カメラの設定
SetCameraPositionAndTarget_UpVecY( VGet( 0.0f, 0.0f, -1.667309f ), VGet( 0.000000f, 0.000000f, 0.000000f ) );
SetCameraNearFar( 0.020000f, 5.000000f );
// 当たり判定を行う線分の2頂点の値をセット
VECTOR Point1 = VGet( 0.0f, 2.0f, -0.49f );
VECTOR Point2 = VGet( 0.0f, -2.0f, -0.49f );
// メインループ
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
// モデルと線分の当たり判定
MV1_COLL_RESULT_POLY Result = MV1CollCheck_Line( Model, -1, Point1, Point2 );
// モデルの描画
MV1DrawModel( Model ) ;
// 線分の描画
if( Result.HitFlag )
{
// 当たっている場合
DrawLine3D( Point1, Result.HitPosition, GetColor( 0, 255, 0 ) ) ;
}
else
{
// 当たっていない場合
DrawLine3D( Point1, Point2, GetColor( 0, 255, 0 ) ) ;
}
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
よろしければ当たり判定を行う際に Y座標を少しだけ上げてみてください
例えばモデルの天辺にプレイヤーがピッタリついている状態でプレイヤーの位置から
下方向に向かう線分で MV1CollCheck_Line を行った場合、計算誤差が発生して
『天辺当たっていない』と判定される確率が高くなりますので…