Atölye › Asteroids › 21/41. adım
Çarpışma için her şeyi bir daire sayacağız: mermi minik bir daire, kaya kendi yarıçapında bir daire. İki daire, merkezleri arasındaki uzaklık iki yarıçapın toplamından küçükse değer.
Uzaklık Pisagor ile bulunur: √(dx² + dy²). Karekök almak yerine iki tarafın da karesini karşılaştırırız; sonuç aynı,
hesap daha hızlı. hits (vurur mu?) fonksiyonu bunu soracak. Bu adımda ekran değişmez.
```js
function hits(a, ar, b, br) {
const dx = a.x - b.x
const dy = a.y - b.y
return dx * dx + dy * dy < (ar + br) * (ar + br)
}
```a ve b → yeri olan (x, y taşıyan) iki şey; ar ve br → yarıçapları.dx, dy → iki merkez arasındaki yatay ve dikey fark.dx * dx + dy * dy → uzaklığın karesi; (ar + br) * (ar + br) → yarıçaplar toplamının karesi.< karşılaştırması zaten true ya da false üretir; return onu geri verir. Tam değmek (eşit olmak) sayılmaz.document.addEventListener('keydown', ... satırının üstüne hits fonksiyonunu yaz; altında bir boş satır kalsın.
Çalıştır: ekran değişmez, kontroller yeşil olmalı.
Beceriler: Çarpışma tespiti
← Sürüklenen kayalar Kaya kırmak →