Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Adding a collision death for the player.

Community Beginner ,
Jan 14, 2018 Jan 14, 2018

I was wondering if anyone knows where to adjust the script and add a player being hit by the enemy causing player death and ending game. Player =AAGun Enemy= Airplane.

package {

import flash.display.*;

import flash.events.*;

import flash.utils.Timer;

import flash.text.TextField;

public class AirRaid extends MovieClip {

private var aagun:AAGun;

private var airplanes:Array;

private var bullets:Array;

public var leftArrow, rightArrow:Boolean;

private var nextPlane:Timer;

private var shotsLeft:int;

private var shotsHit:int;

public function startAirRaid() {

// init score

shotsLeft = 10000;

shotsHit = 0;

showGameScore();

// create gun

aagun = new AAGun();

addChild(aagun);

// create object arrays

airplanes = new Array();

bullets = new Array();

// listen for keyboard

stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);

stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);

// look for collisions

addEventListener(Event.ENTER_FRAME,checkForHits);

// start planes flying

setNextPlane();

}

public function setNextPlane() {

nextPlane = new Timer(1000+Math.random()*1000,1);

nextPlane.addEventListener(TimerEvent.TIMER_COMPLETE,newPlane);

nextPlane.start();

}

public function newPlane(event:TimerEvent) {

// random side, speed and altitude

if (Math.random() > .5) {

var side:String = "down";

} else {

side = "down";

}

var longitude:Number = Math.random()*50+20;

var speed:Number = Math.random()*300+300;

// create plane

var p:Airplane = new Airplane(side,speed,longitude);

addChild(p);

airplanes.push(p);

// set time for next plane

setNextPlane();

}

// check for collisions

public function checkForHits(event:Event) {

for(var bulletNum:int=bullets.length-1;bulletNum>=0;bulletNum--){

for (var airplaneNum:int=airplanes.length-1;airplaneNum>=0;airplaneNum--) {

if (bullets[bulletNum].hitTestObject(airplanes[airplaneNum])) {

airplanes[airplaneNum].planeHit();

bullets[bulletNum].deleteBullet();

shotsHit++;

showGameScore();

break;

}

}

}

if ((shotsLeft == 0) && (bullets.length == 0)) {

endGame();

}

}

// key pressed

public function keyDownFunction(event:KeyboardEvent) {

if (event.keyCode == 37) {

leftArrow = true;

} else if (event.keyCode == 39) {

rightArrow = true;

} else if (event.keyCode == 32) {

fireBullet();

}

}

// key lifted

public function keyUpFunction(event:KeyboardEvent) {

if (event.keyCode == 37) {

leftArrow = false;

} else if (event.keyCode == 39) {

rightArrow = false;

}

}

// new bullet created

public function fireBullet() {

if (shotsLeft <= 0) return;

var b:Bullet = new Bullet(aagun.x,aagun.y,-300);

addChild(b);

bullets.push(b);

shotsLeft--;

showGameScore();

}

public function showGameScore() {

showScore.text = String("Score: "+shotsHit);

showShots.text = String("Shots Left: "+shotsLeft);

}

// take a plane from the array

public function removePlane(plane:Airplane) {

for(var i in airplanes) {

if (airplanes == plane) {

airplanes.splice(i,1);

break;

}

}

}

// take a bullet from the array

public function removeBullet(bullet:Bullet) {

for(var i in bullets) {

if (bullets == bullet) {

bullets.splice(i,1);

break;

}

}

}

// game is over, clear movie clips

public function endGame() {

// remove planes

for(var i:int=airplanes.length-1;i>=0;i--) {

airplanes.deletePlane();

}

airplanes = null;

aagun.deleteGun();

aagun = null;

stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);

stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction);

removeEventListener(Event.ENTER_FRAME,checkForHits);

nextPlane.stop();

nextPlane = null;

gotoAndStop("gameover");

}

}

}

TOPICS
ActionScript
746
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Jan 15, 2018 Jan 15, 2018

Hi, James!

Update checkForHits() with the lines from 18 - 25 like this:

public function checkForHits(event: Event)

{

    for (var bulletNum: int = bullets.length - 1; bulletNum >= 0; bulletNum--)

    {

        for (var airplaneNum: int = airplanes.length - 1; airplaneNum >= 0; airplaneNum--)

        {

            if (bullets[bulletNum].hitTestObject(airplanes[airplaneNum]))

            {

                airplanes[airplaneNum].planeHit();

                bullets[bulletNum].deleteBullet();

                sho

...
Translate
Community Expert ,
Jan 15, 2018 Jan 15, 2018

looks like this is where you're detecting a bullet vs plane:

if (bullets[bulletNum].hitTestObject(airplanes[airplaneNum])) {

airplanes[airplaneNum].planeHit();

bullets[bulletNum].deleteBullet();

shotsHit++;

showGameScore();

break;

}

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jan 15, 2018 Jan 15, 2018

Yeah but I was going for something more like if the enemy plane was to collide into the players AAGun and it caused the player death and ended the game.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advisor ,
Jan 15, 2018 Jan 15, 2018

so just identify AAGun with a unique ID and

make a condition with it.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jan 15, 2018 Jan 15, 2018

I thought I fixed it but it came up with some new errors

package {

import flash.display.*;

import flash.events.*;

import flash.utils.Timer;

import flash.text.TextField;

import flash.utils.getTimer;

public class AirRaid extends MovieClip {

private var aagun:AAGun;

private var airplanes:Array;

private var bullets:Array;

public var leftArrow, rightArrow:Boolean;

private var nextPlane:Timer;

private var shotsLeft:int;

private var shotsHit:int;

public function startAirRaid() {

// init score

shotsLeft = 10000;

shotsHit = 0;

showGameScore();

// create gun

aagun = new AAGun();

addChild(aagun);

// create object arrays

airplanes = new Array();

bullets = new Array();

// listen for keyboard

stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);

stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);

// look for collisions

addEventListener(Event.ENTER_FRAME,checkForHits);

// start planes flying

setNextPlane();

}

public function setNextPlane() {

nextPlane = new Timer(1000+Math.random()*1000,1);

nextPlane.addEventListener(TimerEvent.TIMER_COMPLETE,newPlane);

nextPlane.start();

}

public function newPlane(event:TimerEvent) {

// random side, speed and altitude

if (Math.random() > .5) {

var side:String = "down";

} else {

side = "down";

}

var longitude:Number = Math.random()*50+20;

var speed:Number = Math.random()*300+300;

// create plane

var p:Airplane = new Airplane(side,speed,longitude);

addChild(p);

airplanes.push(p);

// set time for next plane

setNextPlane();

}

// check for collisions

public function checkCollisions() {

for (var airplaneNum:int=airplanes.length-1;airplaneNum>=0;airplanenum--) {

for (var aagunNum: int= aagun.length-1; aagunNum>=0 ; aagunNum--) {

if (airplanes[airplaneNum].hitTestObject(aagun[aagunNum])) {

endGame();

}

}

}

public function checkForHits(event:Event) {

for(var bulletNum:int=bullets.length-1;bulletNum>=0;bulletNum--){

for (var airplaneNum:int=airplanes.length-1;airplaneNum>=0;airplaneNum--) {

if (bullets[bulletNum].hitTestObject(airplanes[airplaneNum])) {

airplanes[airplaneNum].planeHit();

bullets[bulletNum].deleteBullet();

shotsHit++;

showGameScore();

break;

}

}

}

if ((shotsLeft == 0) && (bullets.length == 0)) {

endGame();

}

}

// key pressed

public function keyDownFunction(event:KeyboardEvent) {

if (event.keyCode == 37) {

leftArrow = true;

} else if (event.keyCode == 39) {

rightArrow = true;

} else if (event.keyCode == 32) {

fireBullet();

}

}

// key lifted

public function keyUpFunction(event:KeyboardEvent) {

if (event.keyCode == 37) {

leftArrow = false;

} else if (event.keyCode == 39) {

rightArrow = false;

}

}

// new bullet created

public function fireBullet() {

if (shotsLeft <= 0) return;

var b:Bullet = new Bullet(aagun.x,aagun.y,-300);

addChild(b);

bullets.push(b);

shotsLeft--;

showGameScore();

}

public function showGameScore() {

showScore.text = String("Score: "+shotsHit);

showShots.text = String("Shots Left: "+shotsLeft);

}

// take a plane from the array

public function removePlane(plane:Airplane) {

for(var i in airplanes) {

if (airplanes == plane) {

airplanes.splice(i,1);

break;

}

}

}

// take a bullet from the array

public function removeBullet(bullet:Bullet) {

for(var i in bullets) {

if (bullets == bullet) {

bullets.splice(i,1);

break;

}

}

}

// game is over, clear movie clips

public function endGame() {

// remove planes

for(var i:int=airplanes.length-1;i>=0;i--) {

airplanes.deletePlane();

}

airplanes = null;

aagun.deleteGun();

aagun = null;

stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);

stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction);

removeEventListener(Event.ENTER_FRAME,checkForHits);

nextPlane.stop();

nextPlane = null;

gotoAndStop("gameover");

}

}

}

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 15, 2018 Jan 15, 2018

Hi, James!

Update checkForHits() with the lines from 18 - 25 like this:

public function checkForHits(event: Event)

{

    for (var bulletNum: int = bullets.length - 1; bulletNum >= 0; bulletNum--)

    {

        for (var airplaneNum: int = airplanes.length - 1; airplaneNum >= 0; airplaneNum--)

        {

            if (bullets[bulletNum].hitTestObject(airplanes[airplaneNum]))

            {

                airplanes[airplaneNum].planeHit();

                bullets[bulletNum].deleteBullet();

                shotsHit++;

                showGameScore();

                break;

            }

        }

    }

    for (airplaneNum = airplanes.length - 1; airplaneNum >= 0; airplaneNum--)

    {

        if (aagun.hitTestObject(airplanes[airplaneNum]))

        {

            endGame();

            break;

        }

    }

    if ((shotsLeft == 0) && (bullets.length == 0))

    {

        endGame();

    }

}

I hope it helps!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jan 15, 2018 Jan 15, 2018
LATEST

Thank you! Was close to solving it myself but this really helped tidy it up!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 15, 2018 Jan 15, 2018

does the aagun have an instance name?

if yes, use it.  if no, assign one.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines