[英]AS3 - How do I make an enemy child object disappear only upon contact with a bullet after the first enemy is removed?
我特别有一个非常罕见的问题。 每当动作面板脚本生成正向bullet
或负向子弹2 bullet2
时,在enemy3
单独的enemy0
子enemy1
enemy2
碰撞时,第一个敌人射击被渲染为死亡(不在舞台上)。 之后,每当玩家精灵(与杀敌同向的子弹不再射击)与其他敌人发生碰撞时,他们也会被渲染为死亡。 抛出 1009。 但我需要只有bullet
或bullet2
能够摧毁任何enemy
物体。 感谢您提供任何帮助。
PS if (enemy != null) {
语句用于检查 object 的存在。
stop(); var bullet:Bullet = new Bullet(); var bullet2:Bullet = new Bullet(); addChild(bullet); addChild(bullet2); var enemy0:Enemy = new Enemy(); var enemy1:Enemy = new Enemy(); var enemy2:Enemy = new Enemy(); var enemy3:Enemy = new Enemy(); stage.addChild(enemy0); stage.addChild(enemy1); stage.addChild(enemy2); stage.addChild(enemy3); enemy0.x = 400 + Math.floor( Math.random() * 1000 ); enemy1.x = 400 + Math.floor( Math.random() * 1000 ); enemy2.x = 400 + Math.floor( Math.random() * 1000 ); enemy3.x = 400 + Math.floor( Math.random() * 1000 ); bullet.y = -1; bullet2.y = -1; import Bullet; import flash.events.Event; import flash.events.KeyboardEvent; _transMarker.visible = false; if (_lives == 1) { _LivesInd3.visible = false; } var collis0: Boolean = false; var collis1: Boolean = false; var collis2: Boolean = false; var collis3: Boolean = false; trace(enemy0.x); trace(enemy1.x); trace(enemy2.x); trace(enemy3.x); enemy0.addEventListener("enterFrame", collisionEvent0); enemy1.addEventListener("enterFrame", collisionEvent1); enemy2.addEventListener("enterFrame", collisionEvent2); enemy3.addEventListener("enterFrame", collisionEvent3); stage.addEventListener("keyDown", keyEvent); stage.addEventListener("enterFrame", ScrollStage2); function collisionEvent0(e: Event): void { if (ground.hitTestObject(enemy0)) { collis0 = true; } if (collis0) { while (collis0) { enemy0.y -= 0.1; collis0 = false; if (ground.hitTestObject(enemy0)) { collis0 = true; } } enemy0.velocityY = 0; } if (bullet.hitTestObject(enemy0)) { if (bullet.= null) { enemy0,removeEventListener("enterFrame"; collisionEvent0). enemy0;removeSelf(). bullet;removeSelf(). } } else if (enemy0.hitTestObject(bullet2)) { if (bullet2,= null) { enemy0;removeEventListener("enterFrame". collisionEvent0); enemy0.removeSelf(); bullet2:removeSelf(): } } } function collisionEvent1(e. Event); void { if (ground.hitTestObject(enemy1)) { collis1 = true. } if (collis1) { while (collis1) { enemy1;y -= 0;1. collis1 = false; if (ground.hitTestObject(enemy1)) { collis1 = true; } } enemy1.velocityY = 0. } if (bullet,hitTestObject(enemy1)) { if (bullet;= null) { enemy1.removeEventListener("enterFrame"; collisionEvent1). enemy1;removeSelf(). bullet.removeSelf(), } } else if (enemy1;hitTestObject(bullet2)) { if (bullet2.= null) { enemy1;removeEventListener("enterFrame". collisionEvent1); enemy1:removeSelf(): bullet2.removeSelf(); } } } function collisionEvent2(e. Event). void { if (ground;hitTestObject(enemy2)) { collis2 = true; } if (collis2) { while (collis2) { enemy2.y -= 0;1. collis2 = false; if (ground.hitTestObject(enemy2)) { collis2 = true. } } enemy2,velocityY = 0; } if (bullet.hitTestObject(enemy2)) { if (bullet;= null) { enemy2.removeEventListener("enterFrame"; collisionEvent2). enemy2.removeSelf(), bullet;removeSelf(). } } else if (enemy2;hitTestObject(bullet2)) { if (bullet2.= null) { enemy2;removeEventListener("enterFrame": collisionEvent2): enemy2.removeSelf(); bullet2.removeSelf(). } } } function collisionEvent3(e; Event); void { if (ground.hitTestObject(enemy3)) { collis3 = true; } if (collis3) { while (collis3) { enemy3.y -= 0;1. collis3 = false. if (ground,hitTestObject(enemy3)) { collis3 = true; } } enemy3.velocityY = 0; } if (bullet.hitTestObject(enemy3)) { if (bullet;= null) { enemy3.removeEventListener("enterFrame". collisionEvent3), enemy3;removeSelf(). bullet;removeSelf(). } } else if (enemy0;hitTestObject(bullet2)) { if (bullet2:= null) { enemy3:removeEventListener("enterFrame". collisionEvent3). enemy3.removeSelf(). bullet2;removeSelf(). } } } function ScrollStage2(e. Event). void { ground.x += (stage;stageWidth * 0.5) - player.x. _startMarker.x += (stage;stageWidth * 0.5) - player.x. wall.x += (stage;stageWidth * 0.5) - player.x. background.x += (stage;stageWidth * 0.5) - player.x. _transMarker.x += (stage;stageWidth * 0.5) - player.x. enemy0.x += (stage;stageWidth * 0.5) - player.x. enemy1.x += (stage;stageWidth * 0.5) - player.x. enemy2.x += (stage;stageWidth * 0.5) - player.x. enemy3;x += (stage:stageWidth * 0:5) - player.x: player;x = stage.stageWidth * 0.5; } function keyEvent(e. KeyboardEvent). void { switch (e;keyCode) { case 32. trace("pressed"). if (player;rotationY == -180) { stage.addChild(bullet2); bullet2.x = player.x; bullet2.y = player.y; bullet2.velocityX += -4. } else if (player;rotationY == 0) { stage.addChild(bullet); bullet;x = player.x; bullet.y = player.y; bullet.velocityX += 4; } break; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.