Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 碰撞检查_Actionscript 3 - Fatal编程技术网

Actionscript 3 碰撞检查

Actionscript 3 碰撞检查,actionscript-3,Actionscript 3,我试图测试一个向量中的子弹和另一个向量中的敌人之间的碰撞。我可以很好地访问数据,但问题在于碰撞的实际检测。有趣的是,当我使用hitTestObject时,它可以完美地工作,所以我不明白为什么它不能工作。我可能忽略了什么,但我很难找到它 代码: (eManager.enemyArray中的变量i) { 对于每个(gManager.gunVector中的变量j) { 对于每个(j.B管理器bulletVector中的变量k) { //基本上使用毕达哥拉斯定理,但两边都是平方 //尽量减少任何流程繁重

我试图测试一个向量中的子弹和另一个向量中的敌人之间的碰撞。我可以很好地访问数据,但问题在于碰撞的实际检测。有趣的是,当我使用hitTestObject时,它可以完美地工作,所以我不明白为什么它不能工作。我可能忽略了什么,但我很难找到它

代码:

(eManager.enemyArray中的变量i)
{
对于每个(gManager.gunVector中的变量j)
{
对于每个(j.B管理器bulletVector中的变量k)
{
//基本上使用毕达哥拉斯定理,但两边都是平方
//尽量减少任何流程繁重的操作

如果((i.x-k.x)*(i.x-k.x))+((i.y-k.y)*(i.y-k.y))哎呀。原来我是在测试两个点之间的碰撞,而不是一个点和一个形状之间的碰撞。我错了。

@Austinenley它基本上是通过所有的敌人和所有枪的子弹,检查敌人和子弹之间是否发生碰撞。很明显,当你运行它时,它在做什么它没有按预期工作,所以发生了什么事?@AustinHenley老实说,我不能很好地描述它。即使子弹离敌人很远,敌人也会消失,而且无法解释它为什么会消失。听起来像是你的坐标被弄乱了,或者是因为其他原因,你错误地检测到了碰撞并移除了错误的瞬间e、 这在我身上已经发生过一百万次了。可能是因为你的符号的注册点不在图形的中心。
for each(var i in eManager.enemyArray)
{
    for each(var j in gManager.gunVector)
    {
        for each (var k in j.bManager.bulletVector)
        {

            // Basically using Pythagorean's theorem but with both sides squared
            // to minimize any process-heavy operations
            if(((i.x - k.x)*(i.x - k.x))+((i.y - k.y)*(i.y - k.y)) <= 4)
            { 
                // Note that when this happens, the enemy dies
                i.kill = true;
            }       

        }
    }
}