1 回答

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
OK 所以如果你不介意的話,我會盡量籠統(tǒng)的回答這個(gè)問題,制作這個(gè)游戲的具體代碼可以試著去適應(yīng)。
基本上,假設(shè)您想要進(jìn)行邊界框碰撞(框到框),您需要檢查每個(gè)的 x 和 y,以及每個(gè)的寬度和高度。
意思是,假設(shè)我有兩個(gè)對象,每個(gè)對象都有 x、y、width 和 height 屬性,x 和 y 在左上角,然后檢查它們是否發(fā)生碰撞,創(chuàng)建一個(gè)函數(shù):
function areBoxesColliding(box1, box2) {
return (
box1.x < box2.x + box2.width &&
box1.x + box1.width > box2.x &&
box1.y < box2.y + box2.height &&
box1.y + box1.height > box2.y
)
}
現(xiàn)在,當(dāng)您想檢查兩個(gè)對象是否正在命中(無論是子彈還是角色本身)時(shí),首先要確保每個(gè)對象都具有與其實(shí)際位置相匹配的 x、y、寬度和高度屬性和大小,然后在循環(huán)中(或無論何時(shí)檢查),只需檢查
if(areBoxesColliding(someObjectLikePlayerOrBullet, someObjectLikeAnEnemy)) doIt();
只需將此基本方法適應(yīng)您當(dāng)前的代碼,我不知道m(xù)yVirus.crashWith您的代碼是什么樣的,但只要確保它基本上是這樣的,以及檢查您的子彈是否擊中敵人的代碼。
順便說一句,您再次提到將您的角色放入數(shù)組中,但這真的很簡單,只需為每個(gè)敵人創(chuàng)建一個(gè)類構(gòu)造函數(shù),在渲染時(shí)循環(huán)遍歷該列表,并在檢查碰撞時(shí)循環(huán)遍歷它,當(dāng)您想添加一個(gè)新敵人,只需調(diào)用.push數(shù)組
添加回答
舉報(bào)