我所做的是做了一个数组,在这之后我把两个物体(敌人)推进了那个数组。
现在我正在检查该阵列中的任何敌人是否触碰我的播放器。
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
}
}
}
这应该在技术上有效,但我想不出解决方案,我非常感谢提示。
感谢您抽出宝贵时间。
Ps我刚刚记得:玩家击中了什么地精,我希望他做if语句中的内容,而不是所有的地精,我想瞄准被击中的妖精,并且只打击。抱歉,如果我无法解释它充其量。
编辑;我正在尝试完成一个命中测试,其中命中测试测试玩家是否正在击中阵列中的地精。
如果它击中那个妖精,在那个阵列中,那么只有阵列中的那个妖精会停止,而阵列中的其他精灵会移动。
答案 0 :(得分:0)
玩家遇到什么地精,我希望他做if语句中的内容,而不是所有的地精,我想针对被击中的地精,并且只打击。
但是你的陈述是正确的,你将需要那个妖精......
如果要在第一次碰撞后停止碰撞算法,可以使用break or return
;
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;
}
答案 1 :(得分:0)
这取决于goblin.cantMove
和goblin.canMove
制定者所做的事情。如果他们只是布尔人,你只需要一个 - canMove
可以设置为真或假
我假设你的代码中有一个游戏循环。当您更新地精时,如果canMove
设置为false,则会阻止他们移动
如果这是你想要的,那么在你的游戏循环代码中,我建议你循环你的地精并调用他们的update()
方法。然后,在Goblin
update()
方法中,检查地精的canMove
属性,并仅在canMove
为真时移动它。