vinTagesworld Flash forum

Stel zelf een vraag in het flash forum!


fout met registratiepunt
blokje door W0utah op 07-01-07 om 14:36
actionscript code

function shoot() {
  if (shooting == true && reload == false) {
    removeMovieClip(mc_bullet);
    var kogel:MovieClip = attachMovie("mc_bullet", "mc_bullet", this.getNextHighestDepth());
    kogel._x = mc_kannon.kannon_loop._x;
    kogel._y = mc_kannon.kannon_loop._y;
    var tx:Tween = new Tween(kogel, "_x", mx.transitions.easing.None.easeNone, kogel._x, mc_crosshair._x, 0.5, true);
    var ty:Tween = new Tween(kogel, "_y", mx.transitions.easing.None.easeNone, kogel._y, mc_crosshair._y, 0.5, true);
  }
}
 


ik gebruik deze code om de kogel uit mijn loop van het kannon te laten komen, maar wat zie ik als ik mijn kannon verplaats, de kogel komt er niet meer mooi uit, maar 100 pixels ernaast, weet iemand hier de oplossing voor?

 


Reply
blokje door vinTage op 07-01-07 om 14:51
Je moet wel de startpositie van je kogel meegeven, ik weet niet waar je die nu vandaan hebt, maar die zou je kunnen opvragen dmv zoiets:
in een onEnterFrame
startPosKogel._x = eindPuntVanJeLoop._x;
startPosKogel._y = eindPuntVanJeLoop._y;

en die waarde gebruik je in je tweenclass waar je nu kogel._x en kogel._y hebt

 
Reply
blokje door W0utah op 07-01-07 om 15:06
hij moet dus uit de loop van het kannon komen

dat is die kogel._x

kogel._x = mc_kannon.kannon_loop._x;
kogel._y = mc_kannon.kannon_loop._y;

dat is de startpositie

 
Reply
blokje door vinTage op 07-01-07 om 15:09
hou je die wel bij in een onEnterFrame ?

 
Reply
blokje door W0utah op 07-01-07 om 15:11
nee, maar de positie van het kannon blijft toch heel de tijd hetzelfde

 
Reply
blokje door vinTage op 07-01-07 om 15:17
ah, dan maakt dat niet uit idd.

Maar dan snap ik niet wat je bedoeld met "als ik mn kannon verplaats".

 
Reply
blokje door W0utah op 07-01-07 om 15:18
als ik het verplaats op de stage

edit
heb de fla geupload

http://213.222.20.50/~floor/woutr/invador.fla

laatst ge-edit op: 07-01-07 om 15:22
Reply
blokje door vinTage op 07-01-07 om 15:46
Moet die kogel uit de loop komen ? want nu staat er een vierkanje ergens waar de kogel uitkomt ipv de loop ?

 
Reply
blokje door W0utah op 07-01-07 om 15:49
dat vierkantje is een zogezegde vijand, dat moet ik nog veranderen

de kogel moet uit de loop komen

edit
haal gewoon op regel 2 dit weg: moveEnemy();

laatst ge-edit op: 07-01-07 om 15:56
Reply
blokje door vinTage op 07-01-07 om 16:26
Okay, was ff zoeken want ik vind dit echt niet duidelijk :p

ik heb ook nog een paar opmerkingen waar ik eerst mee zal beginnen.
Die tweenclass is leuk, maar hij is niet echt goed (zoals je hem nu gebruikt)
Want als je nu op iets schiet wat dichtbij is, dan vliegt kogel traag, als je op iets schiet wat ver weg is, dan gaat hij snel.

Dit zou je moeten fixen door een berekining te maken die de afstand van crosshair naar kanon te nemen en dat terug te rekenen naar een variable die gebruikt word voor de duration.

Daarnaast kan je (wat veel mooier is) de bullits verwijderen door onderstaande scriptje:
actionscript code

tx.onMotionFinished = function() {
  removeMovieClip(mc_bullet);
};
 
Zo voorkom je dat je kogels verwijderd worden voordat hij aan het einde is.

Verder zit er een nutteloze onEnterFrame is, want moveLoop() kan je gewoon in je cursor code kwijt
actionscript code

_root.mc_game.mc_crosshair.onMouseMove = function() {
  _root.mc_game.mc_crosshair._x = _xmouse;
  _root.mc_game.mc_crosshair._y = _ymouse;
  updateAfterEvent();
  moveLoop();
};
 



en de oplossing voor je probleem zit em in het pad.
Je gebruikt loop als begin, maar dat moet gewoon het middelpunt van je kanon zijn.
Dus bovenin je script plaats je
actionscript code

kogelX = _root.mc_game.mc_kannon._x;
kogelY = _root.mc_game.mc_kannon._y;

 

en voor de tween gebruik je:
actionscript code

var tx:Tween = new Tween(kogel, "_x", mx.transitions.easing.None.easeNone, kogelX, mc_crosshair._x, 0.5, true);
var ty:Tween = new Tween(kogel, "_y", mx.transitions.easing.None.easeNone, kogelY, mc_crosshair._y, 0.5, true);
 


laatst ge-edit op: 07-01-07 om 16:27
Reply
blokje door W0utah op 07-01-07 om 16:40
bedankt voor al je tips, dat van die kogel wist ik wil, maar moet dat nog aanpassen

edit

nu gaan mijn kogels altijd even snel, heb een berekening gedaan

heb maar wat geprobeert tot ik op dit uitkwam

actionscript code

kogelX = _root.mc_game.mc_kannon._x;
kogelY = _root.mc_game.mc_kannon._y;
afstandX = _root.mc_game.mc_crosshair._x;
afstandY = _root.mc_game.mc_crosshair._y;
durationX = Math.abs(Math.round(afstandX-kogelX))/500;
durationY = Math.abs(Math.round(afstandY-kogelY))/500;
duration = durationX+durationY;
 


laatst ge-edit op: 07-01-07 om 17:00
Dit topic is gesloten.