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的右边缘(我认为这类问题真的会从一个工作示例中受益。移动是使用整数还是实数?实数,问题是如果我取出一个集合,它在该方向上运行良好,但如果它们都在其中,则只是跳过而已