我認爲標題相當自我解釋,但只是爲了澄清我想弄清楚如何判斷碰撞發生在哪一側。C#:我怎麼知道碰撞發生在哪一邊?
想了解更多細節,我試圖做一個迷宮般的遊戲,所以我不能簡單地停止碰撞時的所有移動。相反,我需要能夠分辨碰撞發生在哪一邊,所以我可以阻止這個方向。
任何幫助表示讚賞,如果有更好的方法來解決這個問題,我都會嘗試。
我希望這是足夠的細節,但如果你需要了,問,我會編輯。提前致謝。
@viggity - 不,我沒有使用任何特定的遊戲引擎,我會發布當前的「檢測」代碼,但它有點,荒謬,健壯。
@Streklin - 我使用this.Paint事件來繪製到窗體本身,因爲它建議我開始這樣做,以更好地實時繪製。我還使用了每當計時器基於我按(左,右,上,下)滴答時更新的位置。是的,迷宮是基於瓷磚的。目前它只包含3種顏色。我不是一個非常高級的程序員。
@Eric - 絕對是一場一場比賽。同樣,我只有3種顏色,線條是黑色的,背景是白色的,方形(用戶)是綠色的。我將DrawImage()與Bitmaps一起用於繪製屏幕。
[編輯僞碼總結]
的foreach(牆上_wall在壁) 如果(player.intersectsWith(_wall)) 停止運動;
@JeffH - 我不太清楚你在問什麼,因爲除了測試我正在使用的代碼來嘗試使它工作以外,幾乎所有的東西都存在。我唯一遺漏的是if語句來檢查它是否是x軸,以便x和y可以獨立移動。因此,不要因爲碰到牆壁而「卡住」,而是可能滑向牆壁。雖然之前發生問題,但我沒有看到包括這一點在內。
您是否使用特定的遊戲引擎?這是更多的API特定問題,而不是C#問題。你有任何可以與我們分享的代碼嗎? – viggity
我認爲了解你如何代表迷宮以及你如何處理運動會有所幫助。你只是使用物理引擎或某種排序將每幀的偏移量添加到位置,是基於迷宮圖塊的嗎? – Streklin
你最初是在做碰撞檢測嗎?這是一維,二維還是三維物體碰撞檢測? –