あたり判定の質問
Rinifisu  2014/05/24(Sat) 21:05
# include <Siv3D.hpp>

void Main()
{
const Font font(30);

while (System::Update())
{
font.draw(Format(Mouse::Pos()));

Line Player(Mouse::Pos(), Mouse::PreviousPos());
Rect Rec(150, 200, 350, 400);

Player.draw(10);
Rec.draw();

if (Player.intersects(Rec))
{
System::Exit();
}
}
}

マウスの現在位置と1フレーム前のマウスの位置のLineと
X:150 , Y:200 から X:+350 , Y:+400の四角形に触れると終了するプログラム・・・だったのですが、

それぞれの四角のどれか1つの座標に当てはまるとあたったことになって終了しますが原因は何ですか?

簡単にまとめると
四角形のX:150 、 X:150+350 、 Y:200 、 Y:200+400
どれか1つでも座標がMouse::Pos()と同じ座標になると、
Player.intersects(Rec)がtrueを返してきます。

これは仕様ですか?
原因がわかる方教えてください。
お願いします。

Polygon Player{ Mouse::Pos(), Mouse::PreviousPos() };
で行うとPolygonが表示されない&あたり判定が機能しないので使っていません。
こちらの原因もわかる方教えてください。
お願いします。

僕の自作ゲームに致命的なのでお願いします。
Reputeless  2014/05/24(Sat) 21:46
Siv3D の Line のあたり判定にバグが発生しているようです。
原因を調査して対応します。

なお、Polygon を作るには、最低でも 3 つの異なる時計回りの頂点が必要です。
Rinifisu  2014/05/24(Sat) 22:03
>>>Siv3D の Line のあたり判定にバグが発生しているようです。
>>>原因を調査して対応します。

お願いします。


>>>なお、Polygon を作るには、最低でも 3 つの異なる時計回りの頂点が必要です。

2点を同じ座標に指定してLine代わりにして使います。
ありがとうございます。
Reputeless  2014/05/24(Sat) 22:59
バグを修正し、上記コードで問題が発生しないことを確認しました。
アップロードされている Siv3D May 2014 を修正版に差し替えました。
すでに May 2014 をインストールしている場合はアンインストールしてから、修正版を再インストールしてください。

バグの報告ありがとうございました。
Rinifisu  2014/05/26(Mon) 09:14
別スレッドに移動しました

- WEB PATIO -