my spawner only spawns in one spot. all the enemies just come like a waterfall at once. code-
onClipEvent (load) {
nextenemy = 0;
enemynum = 30;
enemymin = 30;
enemymax = 50;
}
onClipEvent (enterFrame) {
if (nextenemy == 0) {
nextenemy = 15+random(40);
enemynum++;
_root.enemy.duplicateMovieClip("enemy"+enemynum, enemynum);
_root["enemy"+enemynum]._x = random(_root.stagex);
_root["enemy"+enemynum]._y = -40;
}
if (nextenemy>0) {
nextenemy--;
}
if (enemynum>=enemymax) {
enemynum = enemymin;
}
}
no errors on output .any problem?
Rather Cheesy rules! Pokit likes him because he has "cheese" in his name
This tutorial is awesome. However I've got two questions:
1.: When part 2 will be done ?
2.: How should I add more enemy types? Like a mothership or advanced enemies.
Sorry for double posting but I figured out how to add another enemy type and it can be interesting for the others:
First step:
View the actions of the spawner in the onClipEvent(load) segment add this:
Second step: Still in the spawner add this bit of code but now in the enterFrame segment, after the original code:Code:nextenemy2 = 0; enemy2num = 60; enemy2min = 60; enemy2max = 80;
Third step:Code:if (nextenemy2 == 0) { nextenemy2 = 15+random(40); enemy2num++; _root.enemy2.duplicateMovieClip("enemy2"+enemy2num,enemy2num); _root["enemy2"+enemy2num]._x = random(_root.stagex); _root["enemy2"+enemy2num]._y = -40; } if (nextenemy2>0) { nextenemy2--; } if (enemy2num>=enemy2max) { enemy2num = enemy2min; }
on the shot mc add this code, after the original, but still in the enterFrame segment:
Fourth step:Code:for (a=60; a<=80; a++) { if (this.hitTest(_root["enemy2"+a])) { _root["enemy2"+a].shield -= 1; this.removeMovieClip(); } }
Draw another enemy type and name the instance of it enemy2 on the actions of this mc add these (I made it slower but equipped with stronger shield)
Done. I hope it works for everyone.Code:onClipEvent (load) { speed = 1+random(5); shield = 5; } onClipEvent (enterFrame) { _y += speed; if (shield<=0) { _root.expnum++; _root.explosion.duplicateMovieClip("explosion"+_root.expnum, _root.expnum); _root["explosion"+_root.expnum]._x = this._x; _root["explosion"+_root.expnum]._y = this._y; _root.kills++; this.removeMovieClip(); } if (_root.expnum>_root.expmax) { _root.expnum = _root.expmin; } if (this.hitTest(_root.player)) { _root.expnum++; _root.explosion.duplicateMovieClip("explosion"+_root.expnum,_root.expnum); _root["explosion"+_root.expnum]._x = this._x; _root["explosion"+_root.expnum]._y = this._y; _root.gotoAndStop(2); _root.player.removeMovieClip(); this.removeMovieClip(); } }
Edit: There is a bug in it (at least for me) sometimes the advanced enemies just disappear, without even shooting on them. Ideas?
The Pirate - contact me plz.
Master-Samus
http://power-fusion.org
Favourite Member 2009, Best Signatures 2009do not forget that you are going to die
>click here to see the to-do list for my game project<
>click here to ask me a question<
I finished this, and with no flaws I assume.
Here's all of the code in the game.
Main Frame on timeline
stagex = 400;
stagey = 600;
expnum = 55;
expmin = 55;
expmax = 75;
Kills = 0;
Player Ship
onClipEvent (load) {
speed = 5;
shotnum = 10;
shotmin = 10;
shotmax = 20;
reload = 8;
nextshot = 0;
}
onClipEvent (enterFrame) {
if (this._name == "player") {
if (_x>_root.stagex) {
_x = _root.stagex;
}
if (_x<0) {
_x = 0;
}
if (_y>_root.stagey) {
_y = _root.stagey;
}
if (_y<0) {
_y = 0;
}
if (Key.isDown(Key.SPACE)) {
if (nextshot == 0) {
nextshot = reload;
shotnum++;
_root.shot.duplicateMovieClip("shot"+shotnum, shotnum);
_root["shot"+shotnum]._x = this._x;
_root["shot"+shotnum]._y = this._y;
}
}
if (nextshot>0) {
nextshot--;
}
if (shotnum>=shotmax) {
shotnum = shotmin;
}
if (Key.isDown(Key.LEFT)) {
_x -= speed;
}
if (Key.isDown(Key.RIGHT)) {
_x += speed;
}
if (Key.isDown(Key.UP)) {
_y -= speed;
}
if (Key.isDown(Key.DOWN)) {
_y += speed;
}
}
}
Player's Projectile
onClipEvent (load) {
speed = 10;
}
onClipEvent (enterFrame) {
_y -= speed;
for (a=30; a<=50; a++) {
if (this.hitTest(_root["enemy"+a])) {
_root["enemy"+a].shield -= 1;
this.removeMovieClip();
}
}
}
enemy
onClipEvent (load) {
speed = 4+random(5);
shield = 3;
}
onClipEvent (enterFrame) {
_y += speed;
if (this.hitTest(_root.player)) {
_root.expnum++;
_root.explosion.duplicateMovieClip("explosion"+_ro ot.expnum, _root.expnum);
_root["explosion"+_root.expnum]._x = this._x;
_root["explosion"+_root.expnum]._y = this._y;
_root.player.removeMovieClip();
this.removeMovieClip();
}
if (shield<=0) {
_root.expnum++;
_root.explosion.duplicateMovieClip("explosion"+_ro ot.expnum, _root.expnum);
_root["explosion"+_root.expnum]._x = this._x;
_root["explosion"+_root.expnum]._y = this._y;
_root.kills++;
this.removeMovieClip();
}
if (_root.expnum>_root.expmax) {
_root.expnum = _root.expmin;
}
}
sspawner
onClipEvent (load) {
if (this.hitTest(_root.player)) {
_root.expnum++;
_root.explosion.duplicateMovieClip("explosion"+_ro ot.expnum, _root.expnum);
_root["explosion"+_root.expnum]._x = this._x;
_root["explosion"+_root.expnum]._y = this._y;
_root.player.removeMovieClip();
this.removeMovieClip();
}
_root.playerbase.duplicateMovieClip("player", 100);
_root.player._x = _root.stagex/2;
_root.player._y = _root.stagey-50;
nextenemy = 0;
enemynum = 30;
enemymin = 30;
enemymax = 50;
}
onClipEvent (enterFrame) {
if (nextenemy == 0) {
nextenemy = 15+random(40);
enemynum++;
_root.enemy.duplicateMovieClip("enemy"+enemynum, enemynum);
_root["enemy"+enemynum]._x = random(_root.stagex);
_root["enemy"+enemynum]._y = -40;
}
if (nextenemy>0) {
nextenemy--;
}
if (enemynum>=enemymax) {
enemynum = enemymin;
}
}
Make sure the instance names are correct for all objects or this won't work.
In all respect for learning, this should be used as a reference, and not ass a short-cut.
Jack of Blades