Volledige versie bekijken : sneller als fps
Fatty Owl
%Europe/Berlin %834 %2005, 21:01
ik heb een probleempje. ik heb een mannetje. Deze kan springen en zo hoger in het level geraken. Maar als hij van hoog valt, gaat hij met stukken van 20 _y naar beneden ofzo. Dus als hij op de grond belandt steekt hij er half in voor de hit gedetect wordt :D ... Ik zou nu willen dat hij altijd valt met 1 speed maar wel telkens sneller. ik heb geen idee hoe ik hier aan moet beginnen, met een setInterval ofzo?
TheDutch
%Europe/Berlin %839 %2005, 21:08
[edit = verkeerd gelezen]
TheDutch
%Europe/Berlin %842 %2005, 21:13
Als ik jou was zou ik zelf een detectie script schrijven(met X en Y coordinaten) die vooruit kan denken. Op die manier weet je bijvoorbeeld al 3 stappen van te voren of je te ver in de grond gaat vallen. Je kunt dan de val zo aanpassen dat hij precies goed op de grond valt.
Je kunt natuurlijk ook wanneer er een hit is met hitTest(), het poppetje op de juist plek zetten door direct de coordinaten aan te passen naar de plek boven de grond. Aan jou de keuze dus :).
Snellere FPS of setInterval heeft trouwens geen zin omdat de afstand tot de grond en de valsnelheid gewoon hetzelfde blijft.
Fatty Owl
%Europe/Berlin %850 %2005, 21:24
geen van bijde gaan lukken denk ik:( omdat ik meerdere hitTest gebruik gaat het eerste niet en het tweede ook om dezelfde reden. (dit kan wel gaan maar ik vindt geen korte oplossing :(. dit is mijn script: i = 0;
MovieClip.prototype.gravity = function(gravity1, bounce1) {
bounce = bounce1/10;
gravity = gravity1;
firstY = this._y;
speed = 0;
firstgravity = gravity;
hoogtelimiet = 100;
KeyListener = new Object();
Key.addListener(KeyListener);
this.onEnterFrame = function() {
if (hit=this.hitTest(blokken_mc) or this.hitTest(blok1_mc) or this.hitTest(blok2_mc) or this.hitTest(blok3_mc)) {
if (speed>0) {
speed = 0;
gravity = 0;
}
} else {
gravity = 2;
}
if (speed == 0 && hit == true) {
gravitydone = true;
} else {
gravitydone = false;
}
if (Key.isDown(Key.UP)) {
if (gravitydone) {
hero_mc._y -= blok1_mc._height;
gravity = 2;
speed -= 20;
}
}
speed += gravity;
this._y += speed;
};
};
MovieClip.prototype.beweeg = function(speed) {
var oEF = this.createEmptyMovieClip("oEF_mc", 100);
oEF.onEnterFrame = function() {
if (Key.isDown(Key.RIGHT)) {
if (this._parent._x<800) {
if (this._parent._currentframe == 1) {
this._parent.gotoAndPlay("right");
}
if (this._parent._xscale<0) {
this._parent._xscale = -this._parent._xscale;
}
this._parent._x += speed;
}
} else if (Key.isDown(Key.LEFT)) {
if (this._parent._x>0) {
if (this._parent._xscale>0) {
this._parent._xscale = -this._parent._xscale;
}
if (this._parent._currentframe == 1) {
this._parent.gotoAndPlay("right");
}
this._parent._x -= speed;
}
} else {
this._parent.gotoAndStop(1);
}
};
};
hero_mc.gravity(2, 0);
hero_mc.beweeg(5);
TheDutch
%Europe/Berlin %855 %2005, 21:31
Het kan beide wel, alleen dan moet je wel weten hoe ;).
Je kunt een prototype maken voor de eerste optie, die je op elk object kunt toepassen. Je geeft dan als argument het object dat je wilt testen op een hit. Elke keer wanneer je op een hit test, test je ook 3 stappen vooruit en de rest gaat vanzelf wanneer de functie goed geschreven is. Je herschrijft eigenlijk de hitTest() functie op zo'n manier dat ie vooruit kan denken. Voor de tweede optie kan je ook een prototype schrijven die gewoon kijkt wanneer er een hit is en vervolgens kijkt hoe ver het ene object in het ander steekt en dat verschil opheft.
Heb alleen nu en weinig tijd om je goed opweg te helpen, wellicht dit weekend wanneer je dan nog niet door anderen geholpen bent :).
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.