我有一个名为collisioncheck的函数。现在,它通过检查应用于播放器的变量,如playerPosX、playerVelX、playermaskIMG等,可以完美地工作。
我想做的是像collisioncheck(object)这样的东西,所以假设我调用collisioncheck(player),它会像上面那样用playerPosX检查变量,如果我调用collisioncheck(zombie),它就会检查zombiePosX,等等。
我怎么能这样做呢?
如果你有任何问题,请问,因为我真的不是很擅长解释这一点…提前感谢!
发布于 2011-10-22 13:04:08
这很简单:
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);发布于 2011-10-22 13:02:39
我强烈建议您重构代码,以便像这样的变量
playerPosX
playerPosY
playerVelX
playerVelY
zombiePosX
zombiePosY
zombieVelX
zombieVelY不要出现在您的代码中。相反,zombie和player应该是具有velX、velY、posX和posY等属性的对象。
那么collisionCheck看起来就像
function collisionCheck(object) {
.... object.posX ...
}通过检查当前对象的每个属性,将当前对象与附近所有其他玩家和僵尸进行比较。
您真的不想走将变量名作为字符串处理的路线。本质上,属性为您做了这件事。
发布于 2011-10-22 13:09:52
这里有一个例子
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 );https://stackoverflow.com/questions/7857474
复制相似问题