Arrays 将所有敌人推入一个阵型,然后检查与玩家的碰撞
我所做的是制作一个阵列,然后将两个对象(敌人)推入该阵列 现在,我正在检查该阵列中是否有任何敌人触碰我的玩家Arrays 将所有敌人推入一个阵型,然后检查与玩家的碰撞,arrays,actionscript-3,flash,flashdevelop,Arrays,Actionscript 3,Flash,Flashdevelop,我所做的是制作一个阵列,然后将两个对象(敌人)推入该阵列 现在,我正在检查该阵列中是否有任何敌人触碰我的玩家 private function collision():void { goblin1 = new Goblin; goblin2 = new Goblin; goblinArray.push(goblin1); goblinArray.push(goblin2); //get all enemies in to the
private function collision():void
{
goblin1 = new Goblin;
goblin2 = new Goblin;
goblinArray.push(goblin1);
goblinArray.push(goblin2);
//get all enemies in to the loop
for (var i:int = 0; i < goblinArray.length; i++)
{
var goblin:Goblin = goblinArray[i]; //datatype goblin to the goblin class
if (goblin.hitTestObject(player)) //if anything from that array hits the player then do this
{
//make that individual goblin stop
}
else
{
//make the goblin and other goblins move
}
}
}
私有函数冲突():void
{
小妖精1=新的小妖精;
小妖精2=新的小妖精;
goblinArray.push(goblin1);
goblinArray.push(goblin2);
//让所有的敌人都进入循环
for(变量i:int=0;i
这在技术上应该是可行的,但我想不出一个解决方案,我非常感谢你的提示
谢谢你花时间
Ps我刚刚记得:玩家击中的任何一个地精,我希望他做if语句中的事情,而不是所有的地精,我想瞄准被击中的地精,并且只击中
对不起,如果我最多也解释不了的话
编辑;我正在尝试完成一个命中测试,其中命中测试将测试玩家是否击中阵列中的地精
如果它击中了该阵列中的该地精,那么只有该地精在阵列中停止,而其他地精在阵列中移动
无论玩家击中哪一个地精,我希望他按照if语句中的内容来做,而不是所有的地精,我希望瞄准被击中的地精,并且只击中
但你的说法是正确的,你将拥有所需的地精。。。
如果要在第一次碰撞后停止碰撞算法,可以使用中断或返回
if (goblin.hitTestObject(player)) //if anything from that array hits the player then do this
{
//Do whatever you need
//Decide what flag you need canMove *or* cantMove ;)
goblin.canMove = false;
break;
}
这取决于
goblin.cantMove
和goblin.canMove
设定者做什么。如果它们只是布尔值,您只需要一个-canMove
可以设置为true或false。我假设在代码的其他地方有一个游戏循环。当你更新你的地精时,如果
canMove
设置为false,它们将被阻止移动。如果这是你想要的,那么在你的游戏循环代码中,我建议你通过你的小妖精循环并调用他们的
update()
方法。然后,在您的Goblin
update()
方法中,检查Goblin的canMove
属性,并且仅当canMove
为真时才移动它。对不起,您能否澄清一下您希望实现的目标?有更好或更快的方法来进行碰撞吗?我想你可能需要再次尝试解释你自己,因为我正在努力理解你。顺便说一下,我不认为你需要这两个布尔人。如果goblin.canMove=true,这不是暗示goblin.cantMove=false吗?我已经解决了。谢谢大家。您好,我尝试过类似的方法,但由于命中测试不起作用,所以没有更新。不要把进入框架事件放在你的小妖精里面。运行多线程游戏可能会遇到麻烦。另外,实际上,您将在每一帧添加一个ENTER_FRAME eventListener-您不想这样做。我假设你有一个主要的游戏类,你的小妖精是在这个类中被创建的(它们被放入一个数组中)。如果是这样,请将addEventListener(Event.ENTER_FRAME,gameLoop)放在那里,然后在gameLoop(e:Event)中通过您的小妖精循环,并对每个小妖精调用“update()”。