PDA

View Full Version : [AS2] Bullet collision


Wortho
02-27-2009, 02:41 AM
I am having trouble with the bullet colliding with the enemies. In this case the enemy is a circle: here is the code:

//Settings
var bulletOffset:Number = 4; //pixels - bigger number = less acurate
var bulletLifeTimerTotal:Number = 1000; //fps
var bulletSpeed:Number = 25; //pixels
var reloadSpeed:Number = 400; //ms 1000 = 1 second
var score:Number = 0 //starting score

//Declare variables that we're going to be reusing
//(this saves them in memory thus speeding everything up a little)
var reloadTimer:Number;
var reloadComplete:Boolean = true;
var bulletAngle:Number;
var randomNum:Number;
var playerX:Number;
var playerY:Number;
var rotationDirection:Number;

/**
*
* Fire Weapon
*
*/
function fireWeapon():Void
{
//check if weapon is reloaded, if true, fire bullet
if(reloadComplete == true)
{
//attach bullet
var bullet_mc:MovieClip = _root.attachMovie("bullet", "b"+_root.getNextHighestDepth(), _root.getNextHighestDepth());

//position bullet on player
bullet_mc._x = player_mc._x;
bullet_mc._y = player_mc._y;

bullet_mc.bulletLifeTimer = 0;

//calculate random bullet offset.
randomNum = random(bulletOffset)-(bulletOffset/2);

//set bullet firing angle
bulletAngle = ((player_mc._rotation+randomNum-90)*Math.PI/180);
bullet_mc.xSpeed = Math.cos(bulletAngle)*bulletSpeed;
bullet_mc.ySpeed = Math.sin(bulletAngle)*bulletSpeed;

//set bullet rotation
bullet_mc._rotation = player_mc._rotation

//make it move
bullet_mc.onEnterFrame = function() {
//move bullet
this._x += this.xSpeed;
this._y += this.ySpeed;
//
//check if bullet needs to die of old age
if (this.bulletLifeTimer>=bulletLifeTimerTotal) {
this.removeMovieClip();

}


//update bullet timer
this.bulletLifeTimer++;
};
//start reloading gun
startReloading();
}
}

//start reloading weapon
function startReloading()
{
reloadComplete = false;
//set a timer that will call the gunReloaded function after "reloadSpeed" time passes
reloadTimer = setInterval(this, "gunReloaded", reloadSpeed);
}
//gun reloaded function - clears timers and sets reloaded to true
function gunReloaded()
{
clearInterval(reloadTimer);
reloadComplete = true;

}

//Rotate Player
function rotatePlayer()
{
//update our player location parameters
playerX = player_mc._x;
playerY = player_mc._y;

//calculate player_mc rotation, based on player position & mouse position
rotationDirection = Math.round(180 - ((Math.atan2(_root._xmouse - playerX, _root._ymouse - playerY)) * 180/Math.PI));

//set rotation
player_mc._rotation = rotationDirection;
}

/**
*
* Mouse Controls
*
*/
//create an object that we'll listen to
mouseListener = new Object();

//on Click, fire the weapon
mouseListener.onMouseDown = function() {
fireWeapon();
};

//on mouse move, rotate the player
mouseListener.onMouseMove = function() {
rotatePlayer();
}

//add listener
Mouse.addListener(mouseListener);

kkbbcute
02-27-2009, 06:54 AM
Err... By "I am having trouble with the bullet colliding" do you mean to say that there is an error in your code, or you do not know how to implement a hitTest, because as far as I can see, you havn't even implemented a hitTest, so there should be no problem.