时间:2021-05-26
碰撞检测
目录
代码实例
<div id="box" style="background: #334;width: 100px;height: 100px;position: absolute;cursor: move;z-index: 999;"></div><div id="box2" style="background: green;width: 100px;height: 100px;position: absolute;top: 200px;left: 500px;"></div>(function () { var dragging = false var boxX, boxY, mouseX, mouseY, offsetX, offsetY var box = document.getElementById('box') var box2 = document.getElementById('box2') var box2X, box2Y // 鼠标按下的动作 box.onmousedown = down // 鼠标的移动动作 document.onmousemove = move // 释放鼠标的动作 document.onmouseup = up // 鼠标按下后的函数,e为事件对象 function down(e) { dragging = true // 获取元素所在的坐标 boxX = box.offsetLeft boxY = box.offsetTop // 获取元素box2所在的坐标 box2X = box2.offsetLeft box2Y = box2.offsetTop // 获取鼠标所在的坐标 mouseX = parseInt(getMouseXY(e).x) mouseY = parseInt(getMouseXY(e).y) // 鼠标相对元素左和上边缘的坐标 offsetX = mouseX - boxX offsetY = mouseY - boxY } // 鼠标移动调用的函数 function move(e){ if (dragging) { // 获取移动后的元素的坐标 var x = getMouseXY(e).x - offsetX var y = getMouseXY(e).y - offsetY // 计算可移动位置的大小, 保证元素不会超过可移动范围 var width = document.documentElement.clientWidth - box.offsetWidth var height = document.documentElement.clientHeight - box.offsetHeight // min方法保证不会超过右边界,max保证不会超过左边界 x = Math.min(Math.max(0, x), width) y = Math.min(Math.max(0, y), height) // 给元素及时定位 box.style.left = x + 'px' box.style.top = y + 'px' // 碰撞检测 // x坐标值的范围判断,y坐标值的范围判断 var judge_x = (x >= box2X - box2.offsetWidth) && (x <= box2X + box2.offsetWidth) var judge_y = (y >= box2Y - box2.offsetHeight) && (y <= box2Y + box2.offsetHeight) if (judge_x && judge_y) { console.log("碰撞到") } } } // 释放鼠标的函数 function up(e){ dragging = false } // 函数用于获取鼠标的位置 function getMouseXY(e){ var x = 0, y = 0 e = e || window.event if (e.pageX) { x = e.pageX y = e.pageY } else { x = e.clientX + document.body.scrollLeft - document.body.clientLeft y = e.clientY + document.body.scrollTop - document.body.clientTop } return { x: x, y: y } }})()与简易拖拽的差异
简易拖拽的链接
碰撞检测
// 碰撞检测// x坐标值的范围判断,y坐标值的范围判断var judge_x = (x >= box2X - box2.offsetWidth) && (x <= box2X + box2.offsetWidth)var judge_y = (y >= box2Y - box2.offsetHeight) && (y <= box2Y + box2.offsetHeight)if (judge_x && judge_y) { console.log("碰撞到")}下载源码链接
星辉的Github
以上就是js 实现碰撞检测的示例的详细内容,更多关于js 碰撞检测的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了js实现碰撞检测的具体代码,供大家参考,具体内容如下随手写了个简单的碰撞检测的代码。检测box1和box2是否发生碰撞,若发生碰撞,box2
在Canvas中进行碰撞检测,大家往往直接采用游戏引擎(Cocos2d-JS、Egret)或物理引擎(Box2D)内置的碰撞检测功能,好奇的你有思考过它们的内部
本文实例讲述了JS/HTML5游戏常用算法之碰撞检测像素检测算法。分享给大家供大家参考,具体如下:使用像素碰撞检测法算是最精确的算法了,当然,带来的代价也是比较
本文实例为大家分享了js实现碰撞检测的具体代码,供大家参考,具体内容如下代码:Documentdiv{position:absolute;top:0px;rig
本文实例讲述了JS/HTML5游戏常用算法之碰撞检测包围盒检测算法。分享给大家供大家参考,具体如下:检测物体碰撞实际上是需要检测物体是否相交,而实际应用中物体的