wow, about time someone posted something as usefull as that,
thank a lot ay.
wow, about time someone posted something as usefull as that,
thank a lot ay.
At 8/13/04 03:50 PM, PunkerFish wrote: Mmm...quick question.
How would I go about scrolling with no instance names?
Wow! I can't believe this topic is still alive. I went to Saint Croix for a week (which is why no one could reach me), and thought it would die off.
Anyway, to answer you question, yes, I do have code for an instance-nameless sidescroller. This, obviously, works in tune with the jumping engine (you need to put it in with the engine to make it work). It's slightly complex, but here goes:
First, make a LONG, VERTICAL box on the right. Put it off screen (there is a variation to this, which I will explain later). Then, add this code:
-------------------------------------------------------------
onClipEvent (enterFrame) {
x++;
if (hitTest(_root.circle)) {
_global.moveX = 1;
x=0;
}
if (x==5 && _global.moveX==1) {
_global.moveX=0;
}
}
-------------------------------------------------------------
Do the same thing on the left, except add this code:
-------------------------------------------------------------
onClipEvent (enterFrame) {
x++;
if (hitTest(_root.circle)) {
_global.moveX = -1;
x=0;
}
if (x==5 && _global.moveX==-1) {
_global.moveX=0;
}
}
-------------------------------------------------------------
Then, put this in EVERY CLIP . I CANNOT EMPHASIS HOW IMPORTANT PUTTING IT IN EVERY CLIP IS (other then the vertical boxes. Don't put it in them. Also, don't put it in things that you don't want to scroll, such as the wall blocking off the end of the level).
onClipEvent (enterFrame) {
if (_global.moveX>0) {
_x -= _root.circle.speed;
}
if (_global.moveX<0) {
_x += _root.circle.speed;
}
}
And there ya go! It sidescrolls. This code hasn't been extensively tested like the jumping engine has, so an error or two may occur. If that does happen, e-mail me at Rystic_Force@hotmail.com, or IM me (IMing preferred; we usually get more work done that way).
VARIATION
An alternitive, which I do recommend, is putting the vertical boxes in the center, on the sides of but not touching the player. This gives the feel of an old side scroller, such as Mario, but requires the player to stand in the center (which is why I didn't post it originally. Flexability). Frankly, if I were to make a game (maybe one day), I would use this version.
-Rystic
At 8/14/04 06:04 AM, Rhysswift wrote: cool look what i made www.flashweapons.tk -- its in movies section
Hmmm... Go inside the stick movieclip and move every frame's stick figure up about 2 notches... That should fix it...
Also, mention it's my jumping engine. I do like to be credited :)
At 7/24/04 04:02 PM, liquid-fyre wrote: Could you guys plz tell me how to work this. i m a huge n00b
[IMG]http://img49.exs.cx/img49/5799/LF.jpg[/IMG]
It shows!.. in your grounds gold profile click: "BBS Sigiature Pic" and upload your signiature through there..
u will need to make it 60px high by 400px wide though..
amazing, i will soon make a side scroller! and hopefully it will pass!
UPDATE:
Alright, there was a small bug with the side scrolling engine that allowed the user to move through blocks via the scroll. To fix this bug, replace:
onClipEvent (enterFrame) {
if (_global.moveX>0) {
_x -= _root.circle.speed;
}
if (_global.moveX<0) {
_x += _root.circle.speed;
}
}
with
onClipEvent(enterFrame) {
if (_global.moveX<>0 && _root.circle.yMax>yMin && _root.circle.jump==0) {
if (hitTest(_root.circle) && _root.circle.xmax>_x) {
_root.circle._x -= _root.circle.speed*2;
}
if (hitTest(_root.circle) && _root.circle.xmin>_x) {
_root.circle._x += _root.circle.speed*2;
}
}
if (_global.moveX>0) {
_x -= _root.circle.speed;
}
if (_global.moveX<0) {
_x += _root.circle.speed;
}
}
Anyway, that's the update. If you find any more bugs, please report them at Rystic_Force@hotmail.com. Please send me any .fla's with the bugs. Thank you.
Arrrgg... Nevermind... that code doesn't seem to work... I need more time to fix this bug. I'll update later this week.
At 7/23/04 10:31 PM, Rystic wrote: I've just made a new jumping engine. And, unlike all other jumping engines in this forum, this one doesn't have "_root.ground "in it.
Is there a way where it could be altered so if it jumps from a high ledge and hits a low edge it wont go through?
At 10/18/04 08:48 PM, ChtFreak64 wrote:
Is there a way where it could be altered so if it jumps from a high ledge and hits a low edge it wont go through?
Sorry, I might have confused you. I am talking about your first jumping code, not the side scroller. ^_^
At 10/19/04 09:40 AM, ChtFreak64 wrote:At 10/18/04 08:48 PM, ChtFreak64 wrote:Is there a way where it could be altered so if it jumps from a high ledge and hits a low edge it wont go through?Sorry, I might have confused you. I am talking about your first jumping code, not the side scroller. ^_^
It shouldn't go through....
At 9/19/04 06:54 PM, Rystic wrote: Arrrgg... Nevermind... that code doesn't seem to work... I need more time to fix this bug. I'll update later this week.
I reviewed the script.
It doesn't look like the background was changed at all.
(Unless I missed something)
But hell, I'll try my hand at scripting one.
I'll post it if it works.
I just thought though, having one instance name with _root.ground, and then having all the blocks in there, and having one script on the character would be much more beginner friendly. Hmmmm...
Just my outlook, still a great thing to have.
At 10/22/04 11:41 PM, Swirling_Venom wrote: Whoah talk about bumping and old thread, well none the less, great engine.
This thread isn't that old, anyways, I had a question. Could you make this into an .fla document?
.
At 10/22/04 11:38 PM, -Geoff- wrote: I just thought though, having one instance name with _root.ground, and then having all the blocks in there, and having one script on the character would be much more beginner friendly. Hmmmm...
Just my outlook, still a great thing to have.
Wouldn't work. Because of the "blue border thingie" in flash, a single clip named ground would function as one block. That is to say that each block wouldn't act individually, but rather as a whole, thus pushing out the character even if they're not touching anything.
At 10/22/04 10:31 PM, Rabid_Badger wrote:At 9/19/04 06:54 PM, Rystic wrote: Arrrgg... Nevermind... that code doesn't seem to work... I need more time to fix this bug. I'll update later this week.I reviewed the script.
It doesn't look like the background was changed at all.
(Unless I missed something)
But hell, I'll try my hand at scripting one.
I'll post it if it works.
There was an error that I fixed, but I never posted. I put it in the JumpDis.fla, but I'll post the WORKING code here:
Put all this code in each block (replacing all the old code):
onClipEvent (load) {
activated = false;
down = false;
}
onClipEvent (enterFrame) {
if (_global.moveX<>0 && _root.circle.yMax>yMin && _root.circle.jump==0) {
if (hitTest(_root.circle) && _root.circle.xmax>_x) {
_root.circle._x -= _root.circle.speed*2;
}
if (hitTest(_root.circle) && _root.circle.xmin>_x) {
_root.circle._x += _root.circle.speed*2;
}
}
if (_global.moveX>0) {
_x -= _root.circle.speed;
}
if (_global.moveX<0) {
_x += _root.circle.speed;
}
}
onClipEvent (enterFrame) {
xmin = getBounds(_root).xMin;
xmax = getBounds(_root).xMax;
ymin = getBounds(_root).yMin;
ymax = getBounds(_root).yMax;
if (_root.circle.xMax>xMin && _root.circle.xMin<xMax && _root.circle.yMax<yMin) {
if (_root.circle.yMax-_root.circle.jump*2>yMin) {
_root.circle._y = ymin-_root.circle._height/2;
_root.circle.jump = undefined;
_root.circle.fall = false;
activated = true;
}
}
if (Math.round(_root.circle.yMax)>Math.round(yMin)) {
if (hitTest(_root.circle) && _root.circle.xmax<xmin) {
_root.circle._x -= _root.circle.speed;
}
if (hitTest(_root.circle) && _root.circle.xmin>xmax) {
_root.circle._x += _root.circle.speed;
}
if (hitTest(_root.circle) && _root.circle.ymin>ymax && _root.circle.jump>-1) {
_root.circle.jump = -1*(_root.circle.jump);
}
}
if (activated == true && not hitTest(_root.circle) && _root.circle.jump == undefined) {
_root.circle.jump = 0;
activated = false;
}
if (hitTest(_root.circle) && _root.circle.ymax>ymin && _root.circle.jump<>undefined && _root.circle._y<_y) {
_root.circle._y = ymin-_root.circle._height/2;
_root.circle.jump = undefined;
_root.circle.fall = false;
activated = true;
}
if (_root.circle.ymax-_root.circle.jump>ymin && _root.circle.xMin<xMax && _root.circle.xMax>xMin && _root.circle.jump<>undefined && _root.circle._y<_y) {
_root.circle._y = ymin-_root.circle._height/2;
_root.circle.jump = undefined;
_root.circle.fall = false;
activated = true;
}
}
To those who don't know, there was an error regarding the side scoller. If the scroller touched the edge of a block, and the player touched the scroller, then the player went through the block. This code fixes that.
At 10/25/04 04:21 PM, Rystic wrote:
Wouldn't work. Because of the "blue border thingie" in flash, a single clip named ground would function as one block. That is to say that each block wouldn't act individually, but rather as a whole, thus pushing out the character even if they're not touching anything.
Sure it would, you just need to set shapeflag to true. The link in my sig is proof of it. The only real problem is the fact that it can only detect a hitTest between a point and a shape, not two shapes. However that's still better than the normal way.
At 10/23/04 09:12 PM, Lord_Of_Ketchup wrote:At 10/22/04 11:41 PM, Swirling_Venom wrote: Whoah talk about bumping and old thread, well none the less, great engine.This thread isn't that old, anyways, I had a question. Could you make this into an .fla document?
It is. IM me through MSN messenger and I'll e-mail you the .fla. My e-mail account is Rystic_Force@hotmail.com
Also, be warned, there is another bug in the engine that's pretty minor. It involves a player being able to jump through a block (from the bottom) that's too close to another. I've put a test of the error in my JumpDis.fla, so anyone who wants to try debugging it can (I've been busy of late.)
At 10/25/04 04:25 PM, -Geoff- wrote:At 10/25/04 04:21 PM, Rystic wrote:Sure it would, you just need to set shapeflag to true. The link in my sig is proof of it. The only real problem is the fact that it can only detect a hitTest between a point and a shape, not two shapes. However that's still better than the normal way.
Which version of flash are you using, MX or MX 2004?
At 10/25/04 04:29 PM, Rystic wrote:At 10/25/04 04:25 PM, -Geoff- wrote:
Which version of flash are you using, MX or MX 2004?
I've tried it on both, and it works.
At 10/25/04 04:33 PM, -Geoff- wrote:At 10/25/04 04:29 PM, Rystic wrote:At 10/25/04 04:25 PM, -Geoff- wrote:Which version of flash are you using, MX or MX 2004?I've tried it on both, and it works.
Sorry for the delay. I reached my quota, and needed to get my other account. I forgot it's password, though, so I did some guessing...
Anyway....
You made another version with the shapeflag method? Well, then post it. The link in your sig isn't working for me.
And, for anyone who doesn't know, the shapeflag method is basically:
hitTest (_root.blala.coordinate, _root.blala.coordinate, true) {
etc...
}
The "true" meaning to relate to the object, not the bounds, to sum up very, very quickly.
At 10/25/04 04:33 PM, -Geoff- wrote:At 10/25/04 04:29 PM, Rystic wrote:At 10/25/04 04:25 PM, -Geoff- wrote:Which version of flash are you using, MX or MX 2004?I've tried it on both, and it works.
Sorry, I couldn't post cause' of the quota. Read above. That's me.(FrogbagLock)
Whoops, sorry about the wait, had some computer problems.
Here it is.
Directions: Attach this script to your main player movieclip, then make a movie clip with the instance name "ground" *without the quotes* and put all your blocks and platforms in that.
As of now it supports platforms, and walls. I'll probably add terrain and
jumping down from a platform in a few minutes, and I'll be sure to post the code.
*Note*: Ignore the gotoAndStops, as I put them in my version.
onClipEvent (load) {
this.swapDepths(10000);
vel = -16;
jumping = false;
down = false;
_root._quality = "BEST";
}
onClipEvent (enterFrame) {
rsx = _x+_width/2;
lsx = _x-_width/2;
dsy = _y+_height/2;
kl = Key.isDown(Key.LEFT);
kr = Key.isDown(Key.RIGHT);
ks = Key.isDown(Key.SPACE);
if (ks && !down && !jumping) {
jumping = true;
}
if (jumping) {
if (_root.ground.hitTest(_x, dsy+vel, true) && vel>=0) {
for (x=vel; x>0; x--) {
if (!_root.ground.hitTest(_x, dsy+x, true)) {
_y += x;
break;
}
}
jumping = false;
vel = -16;
}
if (jumping) {
_y += vel;
vel++;
if (vel>16) {
vel = 16;
}
}
}
if (kl) {
if (!jumping) {
gotoAndStop(2);
}
_xscale = -100;
if (!_root.ground.hitTest(lsx-5, _y+_height/3, true)) {
_x -= 5;
} else {
for (i=5; i>0; i--) {
if (!_root.ground.hitTest(lsx-i, _y+_height/3, true)) {
_x -= i;
break;
}
}
}
}
if (kr) {
if (!jumping) {
gotoAndStop(2);
}
_xscale = 100;
if (!_root.ground.hitTest(rsx+5, _y+_height/3, true)) {
_x += 5;
} else {
for (i=5; i>0; i--) {
if (!_root.ground.hitTest(rsx+i, _y+_height/3, true)) {
_x += i;
break;
}
}
}
}
if (!kr && !kl) {
gotoAndStop(1);
}
if (!_root.ground.hitTest(_x, dsy+2, true) && !jumping) {
jumping = true;
vel = 0;
}
if (jumping) {
if (vel<0) {
gotoAndStop(3);
} else {
gotoAndStop(4);
}
}
}
I'm seeing a fews bugs in this (e.g. falling through blocks near the edges, being able to jump through bocks from the bottom, not actually touching the blocks). Can you e-mail me a .fla file with this code?
Well there's obviously a few bugs. But you're meant to be able to jump through from underneath, most platformers allow that *except for ? blocks on mario*.
And that platforming thing I'll fix right now, and email.
At 10/25/04 05:26 PM, -Geoff- wrote: Well there's obviously a few bugs. But you're meant to be able to jump through from underneath, most platformers allow that *except for ? blocks on mario*.
And that platforming thing I'll fix right now, and email.
I need a file in MX, not MX 2004. It keeps saying "Unexpected File Format".
At 10/25/04 05:26 PM, -Geoff- wrote: Well there's obviously a few bugs. But you're meant to be able to jump through from underneath, most platformers allow that *except for ? blocks on mario*.
And that platforming thing I'll fix right now, and email.
One problem with doing it this way is that this jump engine can't handle small blocks clumped together (as in just randomly throwing shapes together with the square tool). The getBounds jump engine can handle small blocks.
None the less, it's a good engine for people new to flash.
I don't really see that problem, but I guess that's just with the graphics on my end. Oh well, no use criticising the different methods, as both have their pros and cons. I was just bored one night and started coding and an hour later I got what you see.
At 10/25/04 05:41 PM, -Geoff- wrote: I don't really see that problem, but I guess that's just with the graphics on my end. Oh well, no use criticising the different methods, as both have their pros and cons. I was just bored one night and started coding and an hour later I got what you see.
Yea, they're both useful. Yours can scale up circles and triangles, and mine can detect smaller blocks. These are both really good aspects of our engines.
I dunno if you fixed this or not, but when I'm scrolling I go through a platform if it's standing vertically. How can I fix this?