衝突検出を実装するためのjs

衝突検出を実装するためのjs

この記事の例では、衝突検出を実装するためのjsの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

コード:

<!DOCTYPE html>
<html lang="ja">
 
<ヘッド>
  <メタ文字セット="UTF-8">
  <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
  <title>ドキュメント</title>
</head>
<スタイル>
  div {
    位置: 絶対;
    上: 0px;
    右: 0px;
    下: 0px;
    左: 0px;
    マージン: 自動;
    幅: 300ピクセル;
    高さ: 300px;
    背景色: 緑;
  }
  
  スパン {
    位置: 絶対;
    上: 0px;
    左: 0px;
    表示: ブロック;
    幅: 100ピクセル;
    高さ: 100px;
    背景色: rgb(10, 151, 233);
  }
</スタイル>
 
<本文>
  <div></div>
  <span></span>
  <スクリプト>
    タグ名で要素を取得する
    タグ名に要素を追加する
    span.onmousedown = 関数(e) {
      // イベント オブジェクトと互換性があります e = window.event || e;
      // グローバルキャプチャを追加 if (span.setCapture) {
        span.setCapture();
      }
      // マウスを押すと、マウスとページの左上との距離が取得されます。var x = e.clientX;
      var y = e.clientY;
      // 要素とページの左上と左上の間の距離 var elex = span.offsetLeft;
      var eley = span.offsetTop;
      // マウスと要素間の距離 = マウスとページ間の距離 - 要素とページ間の距離 var X = x - elex;
      変数 Y = y - エレ;
      document.onmousemove = 関数(e) {
        //マウスの動きにより、マウスとページ間の距離が取得されます //イベント オブジェクトと互換性があります e = window.event || e;
        var movex = e.clientX;
        var movey = e.clientY;
        // 要素の左と上の値 = マウスとページ間の距離 - マウスと要素間の距離 var leftx = movex - X;
        var lefty = movey - Y;
        /*--------------------------------------------------------*/
        // 衝突検出 // 1. 左の安全距離 = 大きなボックスとページの左側の間の距離 - 小さなボックスの幅 var safeleft = div.offsetLeft - span.offsetWidth;
        // 2. 右の安全距離は、大きなボックスとページの左側の間の距離 + 大きなボックスの幅です。var saferight = div.offsetLeft + div.offsetWidth;
        // 3. 上部の安全距離 = 大きなボックスとページの上部の間の距離 - 小さなボックスの高さ var safetop = div.offsetTop - span.offsetHeight;
        // 4. 下部の安全距離 = 大きなボックスとページの上部の間の距離 + 大きなボックスの高さ var safebottom = div.offsetTop + div.offsetHeight;
 
        (leftx < safeleft || leftx > saferight || lefty < safetop || lefty > safebottom)の場合 {
          div.style.background = '緑';
        } それ以外 {
          div.style.background = '赤';
        }
 
        /*--------------------------------------------------------*/
 
        // 境界値 // Leftif (leftx <= 0) {
          左x = 0;
        }
        // 左利き <= 0 の場合 {
          左利き = 0;
        }
        //右 var rightx = document.documentElement.clientWidth - span.offsetWidth;
        (左x >= 右x)の場合
          左x = 右x;
        // 次へ var righty = document.documentElement.clientHeight - span.offsetHeight;
        (左利き >= 右利き)の場合 {
          左利き = 右利き;
        }
 
 
        span.style.left = leftx + 'px';
        span.style.top = lefty + 'px';
      }
      document.onmouseup = 関数() {
 
          ドキュメント.onmousemove = null;
          (span.releaseCapture)の場合{
            span.releaseCapture();
          }
 
 
        }
        // デフォルトイベントを防止します。false を返します。
    }
  </スクリプト>
</本文>
 
</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JS衝突検出方法の分析
  • JavaScriptでゲーム開発の衝突検出をカプセル化するコード
  • 衝突検出特殊効果コード共有を実現するjs
  • ネイティブJSで実装した衝突検出機能の例
  • 衝突検出を実装するためのネイティブ js
  • ポリゴン衝突検出を実装するJavaScript
  • JavaScript に基づく衝突検出の実装
  • ドラッグと衝突検出を実現するjs
  • 動くボールを実現するネイティブjs(衝突検出)
  • js で衝突検出を実装する例
  • three.jsは衝突検出にRaycasterを使用する

<<:  Windows で MySQL のルート パスワードを忘れた場合にリセットする方法

>>:  Linux システム ディスクのフォーマットとスワップ パーティションの手動追加

推薦する

VantフレームワークをWeChatアプレットに導入するプロセス全体の記録

序文WeChat ミニプログラムのネイティブ UI が少し物足りないと感じることがあるので、サードパ...

Linux システムでキャッシュをクリアする方法の概要

1) キャッシュメカニズムの紹介Linux システムでは、ファイルシステムのパフォーマンスを向上させ...

Vueカスタムv-has命令、ボタン権限判定の手順

目次アプリケーションシナリオ簡単に言えば、カスタム指示基本概念グローバルカスタマイズローカルカスタマ...

Centos7 に Docker をインストールします (2020 の最新バージョンが利用可能、コピーして貼り付けるだけ)

操作については、こちらの公式ドキュメントを参照してください。インストール1. 古いバージョンの do...

カレンダーウィジェットのネイティブJS実装

この記事の例では、カレンダーウィジェットを実装するためのjsの具体的なコードを参考までに共有していま...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...

Dockerコンテナでルート権限を取得する方法

まず、コンテナが稼働している必要がありますコンテナのCONTAINER IDは、sudo docke...

Docker Compose で環境変数を参照する方法の例

プロジェクトでは、さまざまな条件や使用シナリオを制御するために、docker-compose.yml...

VueはEChartsを使用して折れ線グラフと円グラフを実装します

バックエンド管理プロジェクトを開発する場合、バックエンドのユーザーデータをカウントし、折れ線グラフや...

HarborをベースにしたDocker専用倉庫の構築方法

目次1. ハーバーの紹介1. ハーバーが民間倉庫を建設3. 港湾の維持管理4. Harborユーザー...

CSS の高度な使い方(実戦で活用)

1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...

MySQLレジストリをクリアする方法

具体的な方法: 1. [ win+r ] を押して実行ウィンドウを開き、「regedit」と入力して...

MySQL 5.7 のインストールと設定のチュートリアル

この記事では、参考までにMySQLのインストールと設定のチュートリアルを紹介します。具体的な内容は次...

CSS flex 複数列レイアウト

基本的な3列レイアウト 。容器{ ディスプレイ: フレックス; 幅: 500ピクセル; 高さ: 20...

Vueカスタムカプセル化ボタンコンポーネント

Vueボタンコンポーネントのカスタムカプセル化コードは参考用です。具体的な内容は次のとおりです。ボタ...