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

Adding a collision death for the player.

Community Beginner ,
Jan 14, 2018 Jan 14, 2018

Copy link to clipboard

Copied

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

Views

476

Translate

Translate

Report

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

...

Votes

Translate

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

Copy link to clipboard

Copied

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;

}

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

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.

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

so just identify AAGun with a unique ID and

make a condition with it.

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

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");

}

}

}

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

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!

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

LATEST

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

Votes

Translate

Translate

Report

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

Copy link to clipboard

Copied

does the aagun have an instance name?

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

Votes

Translate

Translate

Report

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