Javascript 画布中的X和Y坐标有什么问题?
所以,我第一次尝试画布,我试图让一个简单的角色在一个房间里走动,里面有可碰撞的物体,它们在工作。我试图写下应该发生什么的逻辑,如果我站在对象内,但它会将我移动到画布中的随机位置 以下是我试图使用的:Javascript 画布中的X和Y坐标有什么问题?,javascript,html,canvas,Javascript,Html,Canvas,所以,我第一次尝试画布,我试图让一个简单的角色在一个房间里走动,里面有可碰撞的物体,它们在工作。我试图写下应该发生什么的逻辑,如果我站在对象内,但它会将我移动到画布中的随机位置 以下是我试图使用的: if ((collisionPos[1] + collisionSize[1]) <= (player.pos[1] + player.sprite.size[1])) { player.pos[1] = (collisionPos[1] + collisionSize[1]);
if ((collisionPos[1] + collisionSize[1]) <= (player.pos[1] + player.sprite.size[1])) {
player.pos[1] = (collisionPos[1] + collisionSize[1]);
} else if ((player.pos[1] + player.sprite.size[1]) > collisionPos[1]) {
player.pos[1] = (collisionPos[1] - player.sprite.size[1]);
}
if ((player.pos[0] + player.sprite.size[0]) >= (collisionPos[0] + collisionSize[0])) {
player.pos[0] = (collisionPos[0] + collisionSize[0]);
} else if (collisionPos[0] < (player.pos[0] + player.sprite.size[0])) {
Player.pos[0] = (collisionPos[0] - player.sprite.size[0]);
}
if((collisionPos[1]+collisionSize[1])collisionPos[1]){
player.pos[1]=(collisionPos[1]-player.sprite.size[1]);
}
if((player.pos[0]+player.sprite.size[0])>=(collisionPos[0]+collisionSize[0])){
player.pos[0]=(collisionPos[0]+collisionSize[0]);
}如果(碰撞位置[0]<(player.pos[0]+player.sprite.size[0]){
Player.pos[0]=(collisionPos[0]-Player.sprite.size[0]);
}
collisionPos
是碰撞位置的x
和y
的数组(x,y)
,collisionSize
是对象大小的数组(x,y)
,而玩家是玩家。我看不出我做错了什么
如果有帮助的话,存在的碰撞是
{
位置:[0,0],
尺寸:[160,48]
},
{
位置:[160,0],
尺寸:[200,36]
},
{
位置:[360,0],
尺寸:[50400]
},
{
位置:[240,48],
尺寸:[50,50]
},
{
位置:[172120],
尺寸:[20,60]
}
和player.sprite.size=[32,48]我想将此作为评论发布,但太长了,所以:
if ((collisionPos[1] + collisionSize[1]) <= (player.pos[1] + player.sprite.size[1])) {
// Collision bottom edge <= Player's bottom edge (<-- seems wrong I think no size should be inlcuded here.)
player.pos[1] = (collisionPos[1] + collisionSize[1]);
// player's top moves to botom edge of collision
} else if ((player.pos[1] + player.sprite.size[1]) > collisionPos[1]) {
// player's bottom edge > collision top edge
player.pos[1] = (collisionPos[1] - player.sprite.size[1]);
// player's top moves to player's top edge minus player size
}
if ((player.pos[0] + player.sprite.size[0]) >= (collisionPos[0] + collisionSize[0])) {
// player's right edge >= collision's right edge (<-- seems wrong I think no size should be inlcuded here.)
player.pos[0] = (collisionPos[0] + collisionSize[0]);
// player's left edge goes to collision's right edge
} else if (collisionPos[0] < (player.pos[0] + player.sprite.size[0])) {
// collision left edge < player's right edge
player.pos[0] = (collisionPos[0] - player.sprite.size[0]);
// player's left edge moves to collision's left edge minus player's size
}
如果((collisionPos[1]+collisionSize[1])=collision的右边缘(我认为这类问题真的会从一个工作示例中受益。移动是使用整数还是实数?实数,问题是如果我取出一个集合,它在该方向上运行良好,但如果它们都在其中,则只是跳过而已