碰撞檢測


首先我們先要了解一下碰撞檢測有什么用?

碰撞檢測常用於游戲開發,通過碰撞檢測判斷前面是否有障礙物以及兩個物體是否發生碰撞,根據檢測的結果做出不同的處理,

碰撞檢測就是查看物體是否重合

下面寫一個簡單的碰撞檢測代碼

 

首先創建兩個正方形div

        <div id="box1">移動</div>
	<div id="box2">障礙</div>        

  

在設置顏色

			div{
				width:100px;
				height: 100px;
				position: absolute;
				background: bisque;
				text-align: center;
				line-height: 100px;
				color:rebeccapurple;
			}
			#box2{
				left:300px;
				top:200px;
			}

 寫出移動正方形判斷是否碰撞

var box = document.getElementsByTagName('div');
		box[0].onmousedown = function(){
			var disX = event.clientX - this.offsetLeft;
			var disY = event.clientY - this.offsetTop;
			document.onmousemove = function(){
				box[0].style.left = event.clientX - disX + "px";
				box[0].style.top = event.clientY - disY + "px";
				if(collision(box[0],box[1])){
					//碰到了
					box[1].style.background = "pink"
				}else{
					box[1].style.background = "lightseagreen";
				}
			}
			document.onmouseup = function(){
				document.onmousemove = null;
			}
		}

  

 

 這邊把檢測寫成函數了

function collision(obj1,obj2){
			//obj1的四條邊
			var l1 = obj1.offsetLeft;
			var r1 = l1 + obj1.offsetWidth;
			var t1 = obj1.offsetTop;
			var b1 = t1 + obj1.offsetHeight;
			//obj2的四條邊
			var l2 = obj2.offsetLeft;
			var r2 = l2 + obj2.offsetWidth;
			var t2 = obj2.offsetTop;
			var b2 = t2 + obj2.offsetHeight;

			if(r2 < l1 || b2 < t1 || l2 > r1 || t2 > b1){
				return false
			}else{
				return true
			}

		}

  調用函數, obj是要指定傳參數

	function drag(obj){
			obj.onmousedown = function(){
				//記錄鼠標在元素上的坐標位置
				var disX = event.clientX - this.offsetLeft;
				var disY = event.clientY - this.offsetTop;
				document.onmousemove = function(){
					obj.style.left = event.clientX - disX + "px";
					obj.style.top = event.clientY - disY + "px";
				}
				document.onmouseup = function(){
					document.onmousemove = null;
				}
			}
		}
		drag(box[1])

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM