我正試圖檢測窗體中的對象何時比窗體本身更大。當它確實一個MessageBox應該與文本「Game over」一起出現時。窗體對象碰撞檢測的邏輯不正確。
這是我做了什麼:
X軸
private void CollisionXForward()
{
int x = this.Width; //the width of the form is 493
//if the position of x-axis of the rectangle goes over the limit of the form...
if (rc.PositionX >= x)
{
//...game over
MessageBox.Show("Game over");
}
else
{
//move the object +5 every time i press right arrow
rc.MoveXForward();
}
的事情是,矩形自敗,因爲它更進了一步比框架本身。我已經通過聲明「解決」了問題:
if (rc.PositionX >= x - (rc.Width * 2))
而不是您在代碼中看到的正常問題。但是當我用y軸做同樣的事情或者當我改變矩形的大小時,它不起作用。
不要你的意思'rc.Width/2':那如果你需要留出空間了一步,然後測試這樣的測試變得容易
? –
您應該使用'ClientRectangle.Width'和'ClientRectangle.Height',因爲常規的'Width'和'Height'包含標題欄和窗體邊框。也許這是垂直問題。 –
@ 500-InternalServerError沒有任何建議工作 – Mnemonics