第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Javascript 游戲命中檢測僅適用于第一個(gè)對象

Javascript 游戲命中檢測僅適用于第一個(gè)對象

鴻蒙傳說 2022-11-03 10:56:42
我已經(jīng)潛伏了很長時(shí)間,但只是在這里注冊。該站點(diǎn)對涉及 VBA、PHP、MySQL 和 CSS 的工作和個(gè)人項(xiàng)目提供了極大的幫助。我正處于學(xué)習(xí) Javascript 的早期階段,我通過處理實(shí)際項(xiàng)目學(xué)得最好,所以我正在開發(fā)一款名為 Coronaga 的冠狀病毒主題的 Galaga 風(fēng)格游戲。我跟著 w3schools 上的 HTML/JS 游戲教程學(xué)習(xí),所以一般框架就像他們的示例游戲一樣開始。我希望能夠使用對象數(shù)組來制作實(shí)際冗長且具有挑戰(zhàn)性的游戲玩法,而無需大量重復(fù)代碼,但這是另一場戰(zhàn)斗。我有五個(gè)“壞人”顯示并朝主角向下移動(dòng),但盡管對命中檢測代碼進(jìn)行了很多擺弄,但我只能讓它在最左邊的“壞人”上工作。我以前讓它在其他“壞人”上工作,但你必須先打左邊,所以沒用。我正在為對象使用 SVG 圖像,因此 CodePen 并不是一個(gè)真正有效的演示,但它可以在以下鏈接中使用:http ://hwmp.hopto.org:100/coronaga/coronaga.html我還將所有代碼和資源都放在了 GitHub 上: https ://github.com/jonbuder/coronaga這是游戲區(qū)域更新,包括命中檢測代碼:function updateGameArea() {        myGameArea.clear();    //myScore.text = "SCORE: ";    //myScore.update();        ctx = myGameArea.context;    ctx.font = '20px Consolas';    ctx.fillStyle = '#FFFFFF';    ctx.fillText(("Coronavirus: " + score +"   Humanity: " + peoplePoint), 80, 20);        myGamePiece.speedX = 0;    myGamePiece.speedY = 0;        if (myGameArea.key && myGameArea.key == 37) {myGamePiece.speedX = -4; }    if (myGameArea.key && myGameArea.key == 39) {myGamePiece.speedX = 4; }    if (myGameArea.key && myGameArea.key == 38) {myGamePiece.speedY = -4; }    if (myGameArea.key && myGameArea.key == 40) {myGamePiece.speedY = 4; }    myGamePiece.newPos();        myGamePiece.update();    myBaddie1.newPos();    myBaddie1.update();    myBaddie2.newPos();    myBaddie2.update();    myBaddie3.newPos();    myBaddie3.update();    myBaddie4.newPos();    myBaddie4.update();    myBaddie5.newPos();    myBaddie5.update();    //myVirus.newPos();   if (myGameArea.key && myGameArea.key == 32) {myVirus.launch(); }    myVirus.reloadVirus();    myVirus.newPos();    myVirus.update();        }
查看完整描述

1 回答

?
犯罪嫌疑人X

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ù)組


查看完整回答
反對 回復(fù) 2022-11-03
  • 1 回答
  • 0 關(guān)注
  • 269 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號