1

我已經通過類似的問題進行了搜索,沒有找到答案我的特定情況。我在Edge Animate中創建了一個非常基本的遊戲,玩家的遊戲塊(一個簡單的矩形)可以在舞臺上左右上下移動,並且玩家試圖避免與各種其他在舞臺上動畫的簡單矩形相碰撞(沿着y軸)以不同的速度(類似於Frogger的垂直版本)。我似乎無法找到一種簡單的碰撞檢測算法,可以與Edge Animate一起使用,以檢測玩家的矩形與另一個矩形碰撞的時間。這是我在Edge Animate中代碼的compositionReady行動只是兩個矩形(試圖讓它以提醒矩形碰撞!邊緣動畫程序的簡單碰撞檢測

var object1 = sym.getSymbol("BlueRectangle"); 
var object2 = sym.getSymbol("RedRectangle"); 
if (object1.x < object2.x + object2.width && object1.x + object1.width > object2.x && 
    object1.y < object2.y + object2.height && object1.y + object1.height > object2.y) { 

//中的對象都在觸摸 警報(「哎呀你崩潰! 「); 的setInterval(符號(E),35);?

}

但是當我運行該程序,沒有碰撞檢測什麼我做錯了什麼我缺少的是有一更好的方法來做到這一點?我所有的矩形都將軸對齊。任何幫助將不勝感激。

回答

0

如果我是你,我會做的第一件事是在代碼中添加一些調試器行或console.log(...),以便您可以更輕鬆地進行調試。

我認爲錯誤在於你的不平等是倒退......

如果object1是向左對象2的再 object1.x + object1.width < object2.x

如果object1是正確的對象2然後 object1.x> object2.x + object2.width

嘗試首先檢查您的左/右碰撞是否正常,然後同樣檢查上/下。

1

看起來你正在檢查它們是否完全重疊而不是碰撞。你想確保碰撞被檢測到,如果有任何重疊,而不僅僅是完全重疊。

在本質上,分手檢測與X和Y的重疊,改變& &小號暗示1需要與[2]從左側並與||的正確s,敷在括號,把一個&是重疊在這個和類似的語句之間檢查y中的碰撞。

這樣的東西應該可以工作,但是您需要知道對象的頂部,左側,右側和底部邊緣在哪裏(其中x是與對象相關的:左側,中間還是右側? :見imgur.com/GE2vVVB

if ((object1.xright >= object2.xleft || object1.xleft <= object2.xright) && (object1.ytop >= object2.ybottom || object1.ybottom <= object2.ytop)) 
+0

謝謝,userbd,爲您提供幫助。那麼我需要告訴函數我的object1和object 2邊緣是從哪裏開始的?我會怎麼做?對不起,我是Edge的新手,語法(正確合併javascript)對我來說是個問題。 – bwang97

+0

我並不那麼熟悉邊緣動畫。它取決於對象的x和y屬性引用的位置。我可以看看你的代碼,並找出它,或者我做了一個圖像,應該可以幫助http://imgur.com/GE2vVVB 你可以嘗試所有3,看看哪一個工作正確 – userbd

+0

哇!感謝您爲我瀏覽該圖表。我認爲這可以提供幫助。我會嘗試一些更多的編輯,看看我能否實現它。再次感謝。 – bwang97