我有一个名为collisioncheck
的函数。现在,它通过检查适用于播放器的变量(例如playerPosX
,playerVelX
,playermaskIMG
等)来完美地工作。
我想做的事情就像collisioncheck(object)
一样,所以我打电话给collisioncheck(player)
它会检查上面的变量playerPosX
等等,如果我打电话给collisioncheck(zombie)
然后它会检查zombiePosX
等等。
我怎么能这样做?
如果您有任何疑问,请询问我不是很擅长解释这个... 提前谢谢!
答案 0 :(得分:3)
我强烈建议您重构代码,以便像
这样的变量playerPosX
playerPosY
playerVelX
playerVelY
zombiePosX
zombiePosY
zombieVelX
zombieVelY
不会出现在您的代码中。相反,zombie
和player
应该是具有属性的对象,例如velX
,velY
,posX
和posY
。
然后collisionCheck
看起来像
function collisionCheck(object) {
.... object.posX ...
}
通过检查这些对象的每个属性,将当前对象与所有其他附近的玩家和僵尸进行比较。
你真的不想把变量名称作为字符串处理。从本质上讲,属性为您做到这一点。
答案 1 :(得分:1)
非常简单:
function collisioncheck(obj) {
var posX = obj.posX;
var velX = obj.velX;
var maskIMG = obj.maskIMG;
}
// ...
var objectToCheck = {
'posX' : playerPosX,
'velX' : playerVelX,
'maskIMG' : playermaskIMG
};
collisioncheck(objectToCheck);
答案 2 :(得分:0)
以下是您的示例
zombie = { 'posX' : 7, 'posY' : 95 };
player = { 'posX' : 3, 'posY' : 95 };
document.write( zombie.posX );
function CollisionCheck ( o1 , o2 )
{
if ( Math.abs(o1.posX - o2.posX) < 5 )
{
document.write ( 'Kaboom!!!' );
}
}
CollisionCheck ( zombie, player );