JS-碰撞检测

一个简单的碰撞检测例子,检测div1是否和div2发生碰撞,当div1碰到div2时,改变div2的颜色,看测试图

看一下分析图:

当div1在div2的上边线(t2)以上的区域活动时,始终碰不上

当div1在div2的右边线(r2)以右的区域活动时,始终碰不上

当div1在div2的下边线(b2)以下的区域活动时,始终碰不上

当div1在div2的左边线(r2)以左的区域活动时,始终碰不上

除了以上四种情况,其他情况表示div1和div2碰上了,下面试完整测试代码

<div id="div1"></div>
<div id="div2"></div>
<style>
        #div1{
            width:100px ;height: 100px;background: green;
            position: absolute;
        }
        #div2{
            width:100px ;height: 100px;background: yellow;
            position: absolute;left: 300px;top: 200px;z-index: -1;
        }

</style>
<script>
    window.onload = function () {
        var oDiv = document.getElementById('div1');
        var oDiv2 = document.getElementById('div2');
        var disX = 0;
        var disY = 0;
        oDiv.onmousedown = function (ev) {
            var ev = ev|| window.event;
            disX = ev.clientX - oDiv.offsetLeft;
            disY = ev.clientY - oDiv.offsetTop;
            document.onmousemove = function (ev) {
                var ev = ev|| window.event;

                var t1 = oDiv.offsetTop;
                var l1 = oDiv.offsetLeft;
                var r1 = oDiv.offsetLeft + oDiv.offsetWidth;
                var b1 = oDiv.offsetTop + oDiv.offsetHeight;

                var t2 = oDiv2.offsetTop;
                var l2 = oDiv2.offsetLeft;
                var r2 = oDiv2.offsetLeft + oDiv2.offsetWidth;
                var b2 = oDiv2.offsetTop + oDiv2.offsetHeight;
                if(b1<t2 || l1>r2 || t1>b2 || r1<l2){// 表示没碰上

                }else{
                    oDiv2.style.background = 'blue';
                }

                oDiv.style.left = ev.clientX - disX +'px';
                oDiv.style.top = ev.clientY - disY +'px';
            }
            document.onmouseup = function () {
                document.onmousemove = null;
                document.onmouseup = null;

            }
            return false;
        }
    }

</script>
时间: 2024-08-24 13:33:27

JS-碰撞检测的相关文章

js碰撞检测

这篇文章主要介绍了JS实现判断碰撞的方法,实例分析了通过js判断实体碰撞的技巧与相关应用,需要的朋友可以参考下 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  <html>   <head>    <title> demo </title>    &

js实现圆形的碰撞检测

文章地址:https://www.cnblogs.com/sandraryan/ 碰撞检测这个东西写小游戏挺有用der~~~ 注释写的还挺全,所以就不多说了,看注释 这是页面结构.wrap存放生成的小球 box是用来检测的元素 <div class="wrap"> <!-- 用于做碰撞检测的一个元素 --> <div class="box"></div> </div> css: body { margin:

js原生碰撞检测

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> div{width:100px; height:100px; } #box{background:red; position:absolute; } #box1{background:green;position:absolute;top:3

Yomotsu 使用 THREE.js 创建的示例(Examples created by Yomotsu using THREE.js)

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Examples created by Yomotsu using THREE.js 基本立方体 basic cube 带纹理的基本立方体basi

一个简单用原生js实现的小游戏----FlappyBird

这是一个特别简单的用原生js实现的一个小鸟游戏,比较简单,适合新手练习 这是html结构 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="game"> <div id="b

Web3D编程总结——3D碰撞检测初探

自己动手写一个方法比分析他人的写的方法困难很多,由此而来的对程序的进一步理解也是分析别人的代码很难得到的. 一.先来几张效果图: 1.场景中有两个半径为1的球体,蓝色线段从球心出发指向球体的“正向” 2.物体被选中后改变纹理图片和透明度,可以使用“w.s.a.d.空格.ctrl”控制物体相对于物体的正向“前.后.左.右.上.下”移动,按住按键时间越长移动速度越快,绿色线段由球心指向物体运动方向,速度越快露出物体表面的部分越长,按“g”停止所有移动,再次点击物体取消选中状态. 3.可以选取多个物体

js原生捕鱼达人(三)--完结

先给分享下我写完的效果,github有点卡,我没有压缩代码,不过效果可以看到 https://jasonwang911.github.io/ 转载请注明'转载于Jason齐齐的博客http://www.cnblogs.com/jasonwang2y60/' 继续昨天的进行 11>添加金币   相同的创建了coin.js的文件 //添加金币的构造含函数 function Coin(type){ this.type=type; this.x=0; this.y=0; this.cur=0; this

原生js打飞机小游戏

最近为了巩固一下原生的知识,然后拿了一个js小游戏来入手.主要也是为了学习和练手. js代码如下: 1 window.onload = function(){ 2 var oBtn = document.getElementById('gameBtn'); 3 oBtn.onclick = function(){ 4 this.style.display = 'none'; 5 Game.init('div1');//把父级传进去 6 }; 7 }; 8 //创建Game单体 9 10 var

基于HTML5和JS实现的切水果游戏

切水果游戏曾经是一款风靡手机的休闲游戏,今天要介绍的就是一款网页版的切水果游戏, 由JavaSript和HTML5实现,虽然功能和原版的相差太大,但是基本的功能还是具备了,还是模仿的挺逼真,有一定的JavaSript水平的朋友,可以看看源代码,相信你的JavaSript水平会有很大的提升. /** * this file was compiled by jsbuild 0.9.6 * @date Fri, 20 Jul 2012 16:21:18 UTC * @author dron * @si

HTML5吃豆豆游戏开发实战(四)2d碰撞检测、重构-第二篇

今天下午在家没事,写代码.先总结一下学习HTML5和JS的一些经验,再来说游戏的事吧! 这完全是一个HTML5和JS的入门新手的见解,如果您和我一样是新手的话,欢迎交流,当然,高手如果不介意的话,帮小弟指点一二那就更好啦,谢谢,嘿嘿!入正题吧! 1.语法方面 1.1  JS关于数组的定义方法要注意: 比如:var walls = [new Wall(262,200,100,30),new Wall(662,60,30,400),new Wall(762,300,200,30)]; 这是定义一个墙