簡體   English   中英

JavaScript碰撞檢測似乎不起作用?

[英]JavaScript Collision Detection doesn't seem to be working?

所以我正試圖在我的外星入侵者演繹中設置碰撞檢測。 但它幾乎不起作用。 而且我的意思是,我從來沒有得到有效的打擊或true回報。 我甚至嘗試了一些不同的方法,但無論出於何種原因,我都無法得到正確的答案。

碰撞檢測是針對玩家向異形船發射的子彈,只是為了澄清,如果重要的話:D。

這是碰撞檢測代碼:(我試圖讓它容易出錯,希望有一個命中,雖然沒有方法似乎工作)

var isCollidingWithAlien = function(shot){
    var alienImg = document.getElementById('alien');
    for(var i = 0; i < aliens.length; i++){
        return shot.x               < aliens[i].x + alienImg.width  && 
        shot.x + shot.img.width     > aliens[i].x                   &&
        shot.y                      < aliens[i].y + alienImg.height && 
        shot.y + shot.img.height    > aliens[i].y;
    }
};

這不是代碼沒有被調用,也不是一些奇怪的技術錯誤。 它永遠不會回歸真實。

此外,如果你想查看所有代碼,這里是一個JSFiddle

@Update:一直在玩代碼,它似乎正確地注冊了第一個Alien創建的,如果你看看JSFiddle就在左上角。 不知道為什么

問題是,你只返回列表中第一個外星人的碰撞。 如果你對某些外星人都是真的,你應該返回true,或者在所有外星人沒有碰撞后返回false:

var isCollidingWithAlien = function(shot){
    var alienImg = document.getElementById('alien');
    for(var i = 0; i < aliens.length; i++){
        var result = shot.x         < aliens[i].x + alienImg.width  && 
        shot.x + shot.img.width     > aliens[i].x                   &&
        shot.y                      < aliens[i].y + alienImg.height && 
        shot.y + shot.img.height    > aliens[i].y;
        if(result)
            return true;
    }
    return false;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM