PDA

Volledige versie bekijken : Acties van figuurtje in Games


Erwinzzz
%Europe/Berlin %733 %2005, 18:36
Ik vind het leuk om met flash te werken, maar ik ben er nog niet zo goed in. Ik heb een vraag: Ik ben aan het proberen met mogelijkheden van een simpel flash spelletje, met het idee als bij mario ofzo. de acties lukken wel dat als hij naar rechts loopt, dat hij ook naar rechts kijkt, etc. ik heb er voor gekozen aleen de achtergrond voorbij te laten komen en niets te doen met de x positie van het figuurtje. Ik kom er aleen niet helemaal uit hoe ik acties als springen, schieten,etc. het beste kan doen. met bv hulp van script.

Wie doet dit soort dingen vaker of kan me gewoon eeen antal aanwijzingen geven?

voor een voorbeeld van wat ik heb: klik hier (http://www.geocities.com/erwinz9/voorbeeld.swf)

alvast bedankt..

Erwin

Roenes
%Europe/Berlin %742 %2005, 18:49
Bij springen moet je de _y waarde van je figuurtje alleen maar aanpassen in jouw geval :)

Schieten en dergelijke wordt wat moeilijker omdat je aparte mc's moet maken die eigen gedrag gaan krijgen. Dit maakt het geheel wat lastiger. Ookal is het wel te doen natuurlijk :)

Ik zou zeggen: implementeer eerst dat je kan springen en dat er blokjes en zo komen waar je niet doorheen kan lopen. Dus dat je echt een level hebt waar wat in staat. Als alles dan goed werkt, kun je dingen als schieten erin gaan verwerken :)

Erwinzzz
%Europe/Berlin %744 %2005, 18:52
Bij springen moet je de _y waarde van je figuurtje alleen maar aanpassen in jouw geval :)

Schieten en dergelijke wordt wat moeilijker omdat je aparte mc's moet maken die eigen gedrag gaan krijgen. Dit maakt het geheel wat lastiger. Ookal is het wel te doen natuurlijk :)

Ik zou zeggen: implementeer eerst dat je kan springen en dat er blokjes en zo komen waar je niet doorheen kan lopen. Dus dat je echt een level hebt waar wat in staat. Als alles dan goed werkt, kun je dingen als schieten erin gaan verwerken :)

dat begrijp ik.. maar dan krijg je geen mooie springbeweging met bv de benen, ik dacht eraan om in de movieclip een apart setje frames de animatie van springen te maken, en dan bij het drukken van een knop, dat hij daar begint met afspelen, en waneer hij aan het eind is van de springanimatie, weer terug gaat naar het frame waar hij loopt zeg maar..... maar dat deed het niet..... maar voorlopig doe ik het idd maar ff met _y

Erwinzzz
%Europe/Berlin %752 %2005, 19:03
nou het lukt me niet helemaal.. wat ik nu heb is dit maar et lijkt nerges op...


onClipEvent (enterFrame) {
if (Key.isDown(Key.UP)) {
this._y-=2;
if(_y >= 250){ this._y+=3; }
}

theFlashWizard
%Europe/Berlin %752 %2005, 19:04
het is onverstandig om met games te beginnen als je flash wil leren.. want als je dat goed wil doen komt er namelijk erg veel bij kijken..

Erwinzzz
%Europe/Berlin %753 %2005, 19:05
het is onverstandig om met games te beginnen als je flash wil leren.. want als je dat goed wil doen komt er namelijk erg veel bij kijken..

het is ook de bedoeling dat het een simpel spelletje word.... maar ik begrijp wat je bedoelt

theFlashWizard
%Europe/Berlin %762 %2005, 19:17
n simpel spelletje is ook niet simpel.. want je krijgt toch met dingen als het moeten nabootsen van natuurwetten tegen.. zoals jij nu ook..

SaphuA
%Europe/Berlin %908 %2005, 22:48
het is onverstandig om met games te beginnen als je flash wil leren.. want als je dat goed wil doen komt er namelijk erg veel bij kijken..
Heb ik ook gedaan :) Heeft perfect gewerkt.. Het ligt er maar aan waar je interessen zitten..

Erwin,
Je moet begrijpen dat een spelletje, of een sectie ervan, is opgebouwd uit stukken. Zo heb je bijvoorbeeld je hero-character, die kan schieten, lopen, springen, dansen, eten etc. Wat je moet proberen is elk stuk appart aan te maken, maak zonodig een geheel nieuwe flashfile aan waarin je eerst probeert een van deze stukken toe te passen.

Voor het springende gedeelte, moet je op de volgende manier te werk gaan.

Als je een grafiek zou uitzetten van de verticale snelheid waneer iemand springt, zul je zien dat hier een parabool uitkomt. Zoals de rode lijn in deze grafiek (kon even geen ander plaatje vinden) http://www.hhofstede.nl/opgaven/examens/parabool2.gif

Als je hier naar kijkt, zie je dat waneer er gesprongen wordt er een beginsnelheid is, die langzaam afneemt tot 0. Als hij bij 0 is, neemt hij weer toe met dezelfde snelheid.

Nu we de logica gehad hebben kunnen we beginnen met code, let op dat alles op frame 1 komt.
Wat we eerst nodig hebben is een snelheids variable:
var velY = 0;Jah! We hebben em!
Oke, wat we nu nodig hebben is een controle om te kijken of we niet al aan het springen zijn:
var jumping = false;Hebben we dat ook gehad.
Nu gaan we door naar het moeilijkere gedeelte, gebruikers interactie. We willen voorlopig dat het poppetje gaat springen zodat er op spatie is gedrukt.
this.onEnterFrame = function(){
if(Key.isDown(Key.SPACE) && !jumping){
jumping = true;
velY = 12;
}
Nu wordt het tijd om een poppetje te maken die kan springen, dus maak een MC, en geef hem de instance naam 'hero'. Dan kunnen we nu aan het springen beginnen:
if(jumping){
hero._y -= --velY;
}
}En het poppetje springt!

Nou zul je je afvragen, hoe kan dit? Maaaan! Hoe kan da! Hoe kan da nou!?
Nou, heel simpel :)
Elke keer als het poppetje verplaatst wordt, word de snelheid één minder.
Dus dit is wat er gebeurd met de snelheid:
12
11
...
2
1
0
-1
-2
...
-14
-15
Dus het poppetje gaat eerst snel omhoog (12px, 11px, 10px etc.) en dan steeds langzamer (2px, 1px) totdat hij bij het omkeerpunt is, waar de snelheid even 0 is. En dan wordt de snelheid negatief, waardoor hij weer omlaag gaat. Man! Wat is de wereld toch mooi :D

Toch even zoiets kleins met zo'n verhaaltje kunnen brengen... Hoop dat iemand er wat aan heeft :)

Nu is het aan jou de taak uit te zoeken hoe je het ventje kan laten stoppen met springen, en anders zal ik kijken waneer ik tijd heb voor nog een verhaaltje ;) Slaap lekker iedereen..

Edit: Maar ff een voorbeeld erbija toegevoegd :)

Cowerd
%Europe/Berlin %935 %2005, 23:27
Wouw! zelfs ik snap het nu!
1 van de weinige dinge die ik ook snapte!
alleen jammer:
Je moet je reputatiepunten verdelen over andere gebruikers voordat je SaphuA opnieuw punten kan geven.

Erwinzzz
%Europe/Berlin %673 %2005, 17:09
Heeeeeeeeeel erg bedankt ik heb er heel erg veel aan. nou zit ik dus met dat stoppen waneer hij weer op de grond komt in feite. Wat ik dacht is: wanneer hij dus te ver gaat, en velY<0, is jumping weer false en velY moet dan weer gelijk zijn aan 0.....
ik deed dit:

var velY = 0;
var jumping = false;
this.onEnterFrame = function() {
if (Key.isDown(Key.SPACE) && !jumping) {
jumping = true;
velY = 12;
}
if (jumping) {
hero._y -= --velY;
}
if (velY<0) {
velY = 0;
jumping = false;
}
};


maar.. hij komt niet eens meer van de grond af....

Erwinzzz
%Europe/Berlin %676 %2005, 17:14
Heeeeeeeeeel erg bedankt ik heb er heel erg veel aan. nou zit ik dus met dat stoppen waneer hij weer op de grond komt in feite. Wat ik dacht is: wanneer hij dus te ver gaat, en velY<0, is jumping weer false en velY moet dan weer gelijk zijn aan 0.....
ik deed dit:

var velY = 0;
var jumping = false;
this.onEnterFrame = function() {
if (Key.isDown(Key.SPACE) && !jumping) {
jumping = true;
velY = 12;
}
if (jumping) {
hero._y -= --velY;
}
if (velY<0) {
velY = 0;
jumping = false;
}
};


maar.. hij komt niet eens meer van de grond af....

ssrry hij komt wel van de grond af... maar omdat hij op de top natuurlijk 0 is.. blijft hij daar hangen...

Erwinzzz
%Europe/Berlin %678 %2005, 17:16
Ik heb em!! :p wanneer velY < -10 komt hij weer op hetzelfde punt uit!

Cowerd
%Europe/Berlin %680 %2005, 17:19
Ik denk dat het of bij alle getallen onder de 0 zo is of dat -12 nog precieser is..

Erwinzzz
%Europe/Berlin %693 %2005, 17:38
Ik denk dat het of bij alle getallen onder de 0 zo is of dat -12 nog precieser is..
nee.. ik dacht ook onder de -12... maar dat kwam hij lager uit.. Ik heb even een horizontale lijn der onder getrokken om te kijken hoe hij uitkwam en (vind ik) gek genoeg was bij -10 de positie weer precies hetzelfde. ik had ook -12 verwacht.....

Cowerd
%Europe/Berlin %735 %2005, 18:38
Hmm ik denk dat het zo hetzelfde is:
var velY = 0;
var jumping = false;
this.onEnterFrame = function() {
if (Key.isDown(Key.SPACE) && !jumping) {
jumping = true;
velY = 12;
}
if (jumping) {
hero._y -= --velY;
}
if (velY==12) {
velY = 0;
jumping = false;
}
};

xtr0
%Europe/Berlin %773 %2005, 19:34
ik heb gewoon dit gedaan, werkt ook prima:

var velY:Number = 0;
var jumping:Boolean = false;
this.onEnterFrame = function() {
if (Key.isDown(Key.SPACE) && !jumping) {
jumping = true;
velY = 12;
}
if (jumping) {
hero._y -= --velY;
}
if (hero._y == 213){ //de _y van de held is 213
jumping = false;
}
};

Cowerd
%Europe/Berlin %789 %2005, 19:57
ik heb gewoon dit gedaan, werkt ook prima:


klopt, maar dan moet je dat steeds aanpassen als je het poppetje van hoogt wilt veranderen!

SaphuA
%Europe/Berlin %794 %2005, 20:03
Hehe jullie zijn leuk aan het proberen, dat zie ik graag :)

Het probleem nu is dat met al jullie methodes de hero alleen maar horizontaal zou kunnen lopen. Hij zou dus niet van platforms kunnen springen. Hiervoor zou je eigenlijk hitTest moeten gebruiken, zodat er op elk platform gesprongen kan worden. Denk daar maar even over na ;)

Erwinzzz
%Europe/Berlin %797 %2005, 20:08
Hehe jullie zijn leuk aan het proberen, dat zie ik graag :)

Het probleem nu is dat met al jullie methodes de hero alleen maar horizontaal zou kunnen lopen. Hij zou dus niet van platforms kunnen springen. Hiervoor zou je eigenlijk hitTest moeten gebruiken, zodat er op elk platform gesprongen kan worden. Denk daar maar even over na ;)
daar ben ik al wel een tijdje over na aan t denken, maar tot nu toe zonder echt resulaat... kan je me niet met een tip opweg helpen zonder het helemaal voor te kauwen :P.....

SaphuA
%Europe/Berlin %800 %2005, 20:13
klopt, maar dan moet je dat steeds aanpassen als je het poppetje van hoogt wilt veranderen!
Hoe wil je het poppetje dan omlaag laten gaan met de manier die jij gebruikt? :)

Cowerd
%Europe/Berlin %806 %2005, 20:20
Hoe wil je het poppetje dan omlaag laten gaan met de manier die jij gebruikt? :)

Ik bedoel gewoojn op de stage van hoogte veranderen..

FantasTies
%Europe/Berlin %807 %2005, 20:23
Ik heb ook een deel van zo'n spel gemaakt, ik ben begonnen met alleen lijntjes te tekenen, dus een hark poppeke en allemaal lijntjes die op verschillende hoogte liggen zodat je op dingen kan springen etc.
Dit was me redelijk goed gelukt alleen wegen drukte ben ik nooit verder gekomen.
Ik werkte ook met deze code en ook met hitTest, maar het probleem van hitTest was als ik via via op redelijk hoge dingen was gesprongen en dan naar beneden sprong werd de snelhid van mijn poppetje heel hoog uiteraard.
Door die snelheid was het weleens zo dat hitTest dat niet helemaal bij kon houden en dan storte het poppetje tot zijn middel aan in de grond :P hiermee moet je dus wel uitkijken ;).
Ik gebruikte deze code in de mc_grond:

if(this.hitTest(mc_hero)) {
_root.velY = 0;
}

Zo werd de valsnelheid dus (bijna) meteen 0 en stopte het poppetje met vallen :).
Ik wens je nog veel succes met je spel!
P.S. ik ben het er wel mee eens dat je doormiddel van een spel best met flash kan beginnen!

Erwinzzz
%Europe/Berlin %815 %2005, 20:34
Ik heb ook een deel van zo'n spel gemaakt, ik ben begonnen met alleen lijntjes te tekenen, dus een hark poppeke en allemaal lijntjes die op verschillende hoogte liggen zodat je op dingen kan springen etc.
Dit was me redelijk goed gelukt alleen wegen drukte ben ik nooit verder gekomen.
Ik werkte ook met deze code en ook met hitTest, maar het probleem van hitTest was als ik via via op redelijk hoge dingen was gesprongen en dan naar beneden sprong werd de snelhid van mijn poppetje heel hoog uiteraard.
Door die snelheid was het weleens zo dat hitTest dat niet helemaal bij kon houden en dan storte het poppetje tot zijn middel aan in de grond :P hiermee moet je dus wel uitkijken ;).
Ik gebruikte deze code in de mc_grond:

if(this.hitTest(mc_hero)) {
_root.velY = 0;
}

Zo werd de valsnelheid dus (bijna) meteen 0 en stopte het poppetje met vallen :).
Ik wens je nog veel succes met je spel!
P.S. ik ben het er wel mee eens dat je doormiddel van een spel best met flash kan beginnen!
dat werkt niet helemaal, want als je dan op een blok springt, zakt ie er doorheen, welliswaar langzamer.. maar helaas :p wat is de fout hierin?

SaphuA
%Europe/Berlin %848 %2005, 21:21
Oke ik heb even een vorbeeldje gemaakt, ben even bezig dus heb niet veel tijd.
Heb de code gecomment dus hoop dat het duidelijk is :)
De volgende stap wordt zijwaarde collision detectie.

SaphuA
%Europe/Berlin %477 %2005, 12:27
Oke mensen,
Ik had er wel zin in dus ben deze morgen gelijk aan de slag gegaan..

Ik heb de colission van alle kanten gemaakt, dus je zou er in wijze een artbased platformer van kunnen maken. Hoewel er nog kleine dingen zijn die nog niet perfect zijn, komen we al aardig op weg zo. Ook heb ik de fouten en mankementen van de vorige versie eruit gehaald.

Ik heb de code zoveel mogelijk voluit uitgeschreven, zodat het allemaal goed te begrijpen is. Ik heb ook alles gecomment, zodat je precies weet welke code wat doet. Als het goed is heb ik alle foutjes eruit kunnen halen, en anders hoor ik het wel.

Ik vraag me af, is hier wel animo voor? Of zijn er weinig mensen die zich in dit soort dingen intereseren? Het lijkt me leuk om over dit soort dingen wat discussies te houden, maar dan moeten er wel genoeg mensen zijn die hier mee aan willen doen.

~Sph

pulletje
%Europe/Berlin %487 %2005, 12:41
dit is zeker heel leuk om te volgen! Ik zou daarom ook zeggen: Vooral doorgaan!!

SaphuA
%Europe/Berlin %552 %2005, 14:15
dit is zeker heel leuk om te volgen! Ik zou daarom ook zeggen: Vooral doorgaan!!
Hey en bedankt :)
Voor de liefhebbers ben ik een apparte post begonnen waarin ik deze kleine tutorials neer zal zetten, zodat we uteindelijk een platformer kunnen bouwen:
http://www.flashfocus.nl/forum/showthread.php?t=5504

Erwinzzz
%Europe/Berlin %656 %2005, 16:46
Oke mensen,
Ik had er wel zin in dus ben deze morgen gelijk aan de slag gegaan..

Ik heb de colission van alle kanten gemaakt, dus je zou er in wijze een artbased platformer van kunnen maken. Hoewel er nog kleine dingen zijn die nog niet perfect zijn, komen we al aardig op weg zo. Ook heb ik de fouten en mankementen van de vorige versie eruit gehaald.

Ik heb de code zoveel mogelijk voluit uitgeschreven, zodat het allemaal goed te begrijpen is. Ik heb ook alles gecomment, zodat je precies weet welke code wat doet. Als het goed is heb ik alle foutjes eruit kunnen halen, en anders hoor ik het wel.

Ik vraag me af, is hier wel animo voor? Of zijn er weinig mensen die zich in dit soort dingen intereseren? Het lijkt me leuk om over dit soort dingen wat discussies te houden, maar dan moeten er wel genoeg mensen zijn die hier mee aan willen doen.

~Sph
Ik denk dat discussies beter helpen, ik wil dan ook graag mee doen. ik ben nu zelf aan het denken over de schiet acties. Ik heb ook een aantal dingen veranderd. zoals dat bij mij het poppetje niet beweegt, maar de achtergrond, zodat het nog wel LIJKT of hij loopt. En als hij naar rechts lijkt te gaan, hij ook naar rechts kijkt, en hetzelfde naar links. met voetbewegingen.

rackdoll
%Europe/Berlin %709 %2005, 18:01
en jongens ga nou niet klakkeloos alle overnemen en dan zeggen dat je een platform spel hebt gemaakt. Zorg dat je ook begrijpt wat er gedaan en geschreven wordt.
ERG belangrijk. Anders kan je namelijk nog steeds niets ;)

Cowerd
%Europe/Berlin %751 %2005, 19:01
Zorg dat je ook begrijpt wat er gedaan en geschreven wordt.
ERG belangrijk. Anders kan je namelijk nog steeds niets ;)

Ja dat is een goede eigenschap van me die me irriteerd:P
als er 1 regel code staat dan ga ik er allemaal dingen mee proberen en dan ben ik met 1 regel van een tutorial een halfuur aan het spelen:P