Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Melaksanakan Pengesanan Perlanggaran yang Cekap dalam JavaScript Tanpa Perpustakaan?

Bagaimana untuk Melaksanakan Pengesanan Perlanggaran yang Cekap dalam JavaScript Tanpa Perpustakaan?

Linda Hamilton
Linda Hamiltonasal
2024-10-20 12:48:02960semak imbas

How to Implement Efficient Collision Detection in JavaScript Without Libraries?

JavaScript: Pengesanan Perlanggaran Cekap Tanpa jQuery atau gameQuery

Mengesan perlanggaran adalah penting dalam permainan dan simulasi berasaskan JavaScript. Walaupun jQuery dan gameQuery menawarkan kaedah yang mudah untuk tugas ini, pembangun mungkin menghadapi situasi di mana perpustakaan ini bukan pilihan. Dalam kes sedemikian, penyelesaian tersuai diperlukan.

Satu pendekatan untuk pengesanan perlanggaran ialah mencipta tatasusunan kedudukan objek dan menguji setiap lokasi objek berbanding objek yang bergerak. Walau bagaimanapun, kaedah ini adalah mahal dari segi pengiraan dan tidak sesuai untuk aplikasi masa nyata.

Pendekatan yang lebih cekap ialah menggunakan fungsi yang mengira segi empat tepat sempadan setiap objek dan menyemak sama ada segi empat tepat ini bertindih. Berikut ialah rutin segi empat tepat terikat yang mudah:

<code class="javascript">function isCollide(a, b) {
    return !(
        ((a.y + a.height) < (b.y)) ||
        (a.y > (b.y + b.height)) ||
        ((a.x + a.width) < b.x) ||
        (a.x > (b.x + b.width))
    );
}</code>

Fungsi ini mengambil dua objek (a dan b) dengan sifat x, y, lebar dan ketinggian serta mengembalikan benar jika ia berlanggar; jika tidak, ia mengembalikan palsu.

Untuk menggunakan fungsi ini, hanya bandingkan segi empat tepat terikat objek bergerak dan setiap objek yang berpotensi berlanggar. Berikut ialah contoh:

<code class="javascript">// Get the current position of the ball
var ballX = ball.offsetLeft;
var ballY = ball.offsetTop;
var ballWidth = ball.offsetWidth;
var ballHeight = ball.offsetHeight;

// Create an array of someobject positions
var someobjectPositions = [];
for (var i = 0; i < someobjects.length; i++) {
    var someobject = someobjects[i];
    someobjectPositions.push({
        x: someobject.offsetLeft,
        y: someobject.offsetTop,
        width: someobject.offsetWidth,
        height: someobject.offsetHeight
    });
}

// Check for collisions
for (var c = 0; c < someobjectPositions.length; c++) {
    if (isCollide(ball, someobjectPositions[c])) {
        // Handle the collision
    }
}</code>

Dengan menggunakan rutin segi empat tepat terikat yang cekap ini, anda boleh melaksanakan pengesanan perlanggaran masa nyata dalam JavaScript tanpa menggunakan perpustakaan berat seperti jQuery atau gameQuery.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengesanan Perlanggaran yang Cekap dalam JavaScript Tanpa Perpustakaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn