问题描述
因此,我正在构建一个视频游戏,其中飞船与控制器一起移动,当它与火球碰撞时,游戏结束。但是,碰撞发生在实际触摸到两个图像之前(可能是边距照片),所以,当两个项目彼此接触时,如何使碰撞发生准确?谢谢!
代码:
<img src="Photo/fireball.png" id="fireball">
<img src="Photo/Spaceship1.png" id="icon">
//Stop game on collision
function checkCollision() {
let stopGame = document.querySelector("#stopGame")
if (detectOverlap(icon,fireballElement) && fireballElement.getAttribute('hit') == 'false') {
hits++
fireballElement.setAttribute('hit',true)
stopGame.style.display = "inline"; stopGame.style.animation = "seconds 5s forwards"
general.style.display = "none"; b2.style.display = "none"
setTimeout(function() {location.reload()},4500)}
setTimeout(checkCollision,1)}
var detectOverlap = (function() {
function getPositions(icon) {
var pos = icon.getBoundingClientRect()
return [[pos.left,pos.right],[pos.top,pos.bottom]]}
function comparePositions(p1,p2) {
let r1 = p1[0] < p2[0] ? p1 : p2
let r2 = p1[0] < p2[0] ? p2 : p1
return r1[1] > r2[0] || r1[0] === r2[0]}
return function(a,b) {
var pos1 = getPositions(a),pos2 = getPositions(b)
return comparePositions(pos1[0],pos2[0]) && comparePositions(pos1[1],pos2[1])}})()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)