PDA

Volledige versie bekijken : HP in flash games


peres
%Europe/Berlin %864 %2005, 21:45
Hey flashers,

ik heb dus een klein spelletje gemaakt in flash met collision detection. Maar hier wou ik een soort van een Hitpoint meter bij doen. Dus dat er in een hoek het getal 100 staat, en elke keer dat er een obstakel wordt geraakt er bijvoorbeel 20 vanaf wordt gehaald en dat er 80 overblijft. ik heb het al geprobeerd met een dynamic textfield. En daar 100 in gezet. en dan in de MC actions: (de textfield heeft de var. "tekst")

if (hitTest(_root.MC)==true) {
tekst = tekst - 20;
}


Dit leek me een logische oplossing maar het schijnt niet te werken :(

weet iemand misschien een oplossing?

Jordy
%Europe/Berlin %867 %2005, 21:48
if (hitTest(_root.MC)) {
tekst -= 20;
}

Dauntless
%Europe/Berlin %867 %2005, 21:49
Het is beter om met de instance naam property te werken. Verwijder dus je var property en vul als instance naam 'hp' in.

if (hitTest(_root.MC)) {
hp.text = Number(hp.text)-20;
}

Eventueel dit:
if (hitTest(_root.MC)) {
_root.hp.text = Number(hp.text)-20;
}
of
if (hitTest(_root.MC)) {
this._parent.hp.text = Number(hp.text)-20;
}

Pimm
%Europe/Berlin %869 %2005, 21:51
Zie ik dit nou goed? Gebruikt Dauntless _root?

peres
%Europe/Berlin %870 %2005, 21:53
thnx :)


alleen waarom verandert de hp-tekst in "NaN" zodra ik een obstakel raak?

Dauntless
%Europe/Berlin %871 %2005, 21:55
Hangt ervanaf welke van de oplossingen voor je werkt...

Als het de _root versie is moet je ook voor de 2de 'hp.text' een '_root.' zetten.

En ik raad natuurlijk altijd absolute paden aan, maar zijn voorbeeld zou moeten werken (met die var), dus heeft het met scoping te maken en dan is het niet echt simpel om een juist antwoord te geven... Daarom de _root, als 'simpele' oplossing.

peres
%Europe/Berlin %883 %2005, 22:11
ah ja dat was inderdaad het probleem ik was de 2de _root vergeten

alleen ik heb de actionscript zo op de MC:

onClipEvent (enterFrame) {
if (hitTest(_root.MC)==true) {
_root.hp.text = Number(_root.hp.text)-20;
}
}


alleen nou gaat er per seconde zoveel -20 ervanaf. Hoe kan ik het instellen, dat als ik de obstakel (MC) raak, er alleen maar 1 x 20HP vanaf gaat?

Dauntless
%Europe/Berlin %896 %2005, 22:30
Ik had wel gedacht dat je op dat probleem zou stuiten ;).

De beste manier is om er voor te zorgen dat ze niet meer raken... Dat kan je dus doen door de _x of _y aan te passen.

Een andere manier :

onClipEvent (enterFrame) {
if (this.hitTest(_root.MC)&& !hit) {
_root.hp.text = Number(_root.hp.text)-20;
hit = true;
} else {
hit = false;
}
}

//op een frame:
var hit:Boolean = false;

peres
%Europe/Berlin %906 %2005, 22:45
ik heb de actionscript op de MC toegepast en het laatste regeltje op de keyframe waar de MC in staat, maar toch blijft hij telkens zoveel -20 eraf doen. :(

Dauntless
%Europe/Berlin %909 %2005, 22:49
Sorry, mijn fout, het is aangepast:)

peres
%Europe/Berlin %911 %2005, 22:53
ik heb het verandert, alleen nou blijft ie wel 20 eraf doen, maar gaat het minder snel...

Dauntless
%Europe/Berlin %919 %2005, 23:03
Wordt die frame waar 'var hit ...' opstaat meerdere keeren bezocht ?

peres
%Europe/Berlin %922 %2005, 23:08
er is maar 1 keyframe in de layer waar de MC in staat

Dauntless
%Europe/Berlin %930 %2005, 23:19
En staat daar een stop(); op?

peres
%Europe/Berlin %936 %2005, 23:27
ja ook al geprobeerd

var hit:Boolean = false;

stop();


en ook dit
stop();

var hit:Boolean = false;


ik weet niet of dit uitmaakt...

Dauntless
%Europe/Berlin %944 %2005, 23:39
Kan je je .fla even online zetten? Of eventueel ff een PM naar me sturen.

peres
%Europe/Berlin %956 %2005, 23:57
ja hoor. hier is ie:

*klik* (http://members.chello.nl/r.stultiens/hitpoint.fla)

Dauntless
%Europe/Berlin %982 %2005, 00:35
onClipEvent (enterFrame) {
if (this.hitTest(_root.MC3.MC4)) {
if(!hit){
_root.hp.text = Number(_root.hp.text)-20;
hit = true;
}
} else {
hit = false;
}
}


Anders ging de 'else' ook af als hit true was, waardoor hit dan weer op false gezet werd en zo de hp naar beneden ging, etc... :)

peres
%Europe/Berlin %992 %2005, 00:49
echt heel erg bedankt :D

nog 1 klein vraagje :) , ik hoop niet adt ik irritant ben

als de HP-teller op 0 staat wou ik eigenlijk dat er in een bepaalde MC, naar een bepaalde frame gesprongen wordt. Dus heb ik dit in de eerste keyframe van de movie:

if (hp.text = 0) {
_root.MC5.gotoAndStop(3);
}

alleen wanneer ik dit dan test, begint de teller bij 0 :( wat doe ik verkeerd?

Dauntless
%Europe/Berlin %996 %2005, 00:55
De '=' wordt gebruikt om een waarde aan iets toe te kennen. Bv
var mijnVar = "FlashFocus";

Als je 2 dingen wilt vergelijken moet je de '==' gebruiken. (Je hebt ook nog '===' voor als het datatype hetzelfde moet zijn). Zo heb je ook || (if), && (and), ...

if(mijnVar == "FlashFocus"){
trace("mijnVar is gelijk aan flashfocus!");
}

Bij jou wordt het dus:

if (hp.text == 0) {
_root.MC5.gotoAndStop(3);
}
(Misschien wel een _root voor de hp? Ik weet niet waar je hem zet...)

En hij werd dus met jouw scriptje altijd op 0 gezet, en de if ging ook naar true (omdat het toekennen van de variabele gelukt is denk ik).

peres
%Europe/Berlin %008 %2005, 01:12
aha weer wat geleerd, bedankt voor de tip :)


alleen ook al gebruik ik jou AS code, hij schijnt niet te werken :(
Hier even de .fla:

*klik* (http://members.chello.nl/r.stultiens/hitpoint3.fla)

dat rondje is de MC die afgespeeld zou moeten worden als hp 0 is.

Dauntless
%Europe/Berlin %011 %2005, 01:16
Die code moet ook in een onEnterFrame staan, hij moet immers ook elke frame gechecked worden...


onClipEvent (enterFrame) {
if (this.hitTest(_root.MC3.MC4)) {
if(!hit){
_root.hp.text = Number(_root.hp.text)-20;
hit = true;
if (_root.hp.text == 0) {
_root.MC5.gotoAndPlay(4);
}
}
} else {
hit = false;
}
}

En geef je bolletje de instance naam 'MC5' . (En misschien is gotoAndStop beter)...

peres
%Europe/Berlin %014 %2005, 01:20
oh hij doet het! Ik ben helemaal tevreden :D

Heel erg bedankt voor je hulp en je snelle reactie :)

Dauntless
%Europe/Berlin %015 %2005, 01:22
Graag gedaan :)

Folkert
%Europe/Berlin %062 %2005, 02:29
Zo heb je ook || (if), && (and), ...

< mierenPEEP >
daar bedoel je vast 'Zo heb je ook || (or) , && (and)', waarbij gebruik van de and of or depreciated is sinds flash 5.
< /mierenPEEP >

Dauntless
%Europe/Berlin %325 %2005, 08:48
Die if was idd fout :I