Snabb hjälp med ActionScript 3.0 till ett spel.
Hej!
Jag håller just nu på med ett spel i ActionScript 3.0, där jag har stjärnor och specialstjärnor.
Jag vill att dessa specialstjärnor ska komma fram var 8:e fångad stjärna
(helst olika gång på gång så antar att en Math.Random() bör användas till det?)
Problemet är nu att jag vill ta bort specialstjärnan när den kolliderar
med min enhörning (som då är huvudkaraktären i spelet),
men för tillfället så blir det bara fler och fler.
Tänkte även att specialstjärnan skulle ge mer poäng än den vanliga.
(Ursäkta för dålig beskrivning men ställ frågor om något är oklart)
Tacksam för snabba svar!
Koden för specialstjärnan:
Antar att det är removeSpecStjärna som inte är helt rätt, längst ner.
//createSpecStjärna(1);
function createSpecStjärna(numberOfSprites:Number)
{
var stjärn:SpecStjärna;
for (var i:uint = 0; i<numberOfSprites; i++){
stjärn = getNewSpecStjärna();
getNewPos(stjärn);
addChild(stjärn);
stjärn.addEventListener(Event.ENTER_FRAME,moveSpecStjärna);
}
}
function getNewSpecStjärna():SpecStjärna{
var stjärn:SpecStjärna = new SpecStjärna();
stjärn.alpha = Math.random() + 0.5;
stjärn.scaleX = stjärn.scaleY = 0.5 + 0.5;
stjärn.hastighet = 15;
stjärn.vind =(Math.random()*15)-10;
return stjärn;
}
function getNewPos(stjärn:SpecStjärna):void{
stjärn.y =(Math.random()*400);
stjärn.x =(Math.random()*40)-50;
}
function moveSpecStjärna(e:Event):void{
var stjärn:SpecStjärna = SpecStjärna(e.currentTarget);
stjärn.x += stjärn.hastighet;
stjärn.y += stjärn.vind;
if (stjärn.hitTestObject(enhörning_mc)){
getNewPos(stjärn);
}
if (stjärn.x >= 450){
getNewPos(stjärn);
}
else if (stjärn.y>=600){
getNewPos(stjärn);
}
else if (stjärn.y<=-20){
getNewPos(stjärn);
}
function removeSpecStjärna():void{
//Är osäker på denna metod, antar att det är här felet ligger.
stjärn.removeEventListener(Event.ENTER_FRAME, removeSpecStjärna);
removeChild(stjärn);
}
}
Koden till den vanliga stjärnan:
createStjärna(3);
var score:Number = 0;
function createStjärna(numberOfSprites:Number){
var stjär:Stjärna;
for (var i:uint = 0; i<numberOfSprites; i++){
stjär = getNewStjärna();
getNewPosition(stjär);
addChild(stjär);
stjär.addEventListener(Event.ENTER_FRAME,moveStjärna);
}
}
function getNewStjärna():Stjärna{
var stjär:Stjärna = new Stjärna();
stjär.alpha = Math.random() + 0.5;
//stjär.scaleX = stjär.scaleY =(Math.random()*0.5)+0.5;
stjär.hastighet = (Math.random()*10);
stjär.vind =(Math.random()*4);
return stjär;
}
function getNewPosition(stjär:Stjärna):void{
stjär.y =(Math.random()*200)-50;
stjär.x =(Math.random()*50)-50;
}
function moveStjärna(e:Event):void{
var stjär:Stjärna = Stjärna(e.currentTarget);
stjär.x += stjär.hastighet;
stjär.y += stjär.vind;
if (stjär.hitTestObject(enhörning_mc)){
getNewPosition(stjär);
score ++;
poang_txt.text=String(score);
if (score %5){
createSpecStjärna(1);
}
}
if (stjär.x >= 450){
getNewPosition(stjär);
}
else if (stjär.y>=600){
getNewPosition(stjär);
}
else if (stjär.y<=-20){
getNewPosition(stjär);
}
}
"What is to give light must endure burning." - Viktor Frankl