0
試圖將練習中的小遊戲放在一起,我遇到了一個問題。關鍵是抓住地精,但我不知道如何讓遊戲檢測到該玩家擊中了地精。如何檢測此JavaScript遊戲的物體碰撞
到目前爲止,只有當您的位置Y和X與敵人軸相匹配時,您才能檢測到感動。我該如何增加兩者的寬度或更好的檢測觸摸方式。
嘗試一下這裏:https://jsfiddle.net/acbkk7cs/4/
風格:
#map{
margin: 0 auto;
height: 510px;
width: 510px;
background-image:url(background.png);
}
.character{
background-image:url(character.png);
z-index:1;
position: relative;
top: 150px;
left: 150px;
height: 32px;
width: 33px;
}
.monster{
background-image:url(monster.png);
position: relative;
height: 32px;
width: 30px;
}
的Javascript:
$(document).ready(function(){
var char = {
player : $(".character"),
x: 150,
y: 150
};
var monster = {
npc : $(".monster"),
x: 100,
y: 100
};
var keypush = {};
$(document).on("keydown keyup", function(e){
var keyN = e.which;
keypush[keyN] = e.type === "keydown";
});
function moveCharacter(){
if (keypush[37]) char.x -=2;
if (keypush[38]) char.y -=2;
if (keypush[39]) char.x +=2;
if (keypush[40]) char.y +=2;
char.player.css({transform:"translate3D("+ char.x +"px, "+ char.y +"px, 0)"});
monster.npc.css({transform:"translate3D("+ monster.x +"px, "+ monster.y +"px, 0)"});
var playerPosX = char.player.position().top;
var monsterPosX = monster.npc.position().top;
var playerPosY = char.player.position().left;
var monsterPosY = monster.npc.position().left;
if (playerPosX === monsterPosX
&& playerPosY === monsterPosY
){
document.getElementById("pos").innerHTML="Touched";
} else {
document.getElementById("pos").innerHTML="Off";
}
//backend logs
console.log(char.x);
}
(function engine(){
moveCharacter();
window.requestAnimationFrame(engine);
}());
});
HTML:
<div id = "map">
<div class = "character">
</div>
<div class = "monster">
<p id = "pos" style = "color:yellow;font- weight:bold;position:relative;left:5px;font-size:20px;">Position: </p>
</div>
</div>
希望我能多謝你一百次。 –
一旦很多。謝謝! ;-) – Kenney
@OsuCommunity,如果你對遊戲設計師來說很重要,觸摸距離不是一個常數。你需要考慮到你的角色基本上是正方形,並且即使中心點在觸摸距離之外,角也可以重疊。在更新的小提琴中,我可以輕鬆地將角落重疊並仍然顯示「關閉」。 –