Kardin
April 6, 2006, 12:56am
1
Okay, here’s the deal: I’m making a platformer/RPG. Here’s my main problem: The platforming doesn’t work. I’ve TRIED to program it so that the elf animates but it’s the background that actually moves, so when he jumps, the background moves.
Instead, he freezes in the jumping pose and doesn’t move.
So yah, if you could give me a hand with the coding.
WARNING: Requires Flash 8
THE FILE: http://lfs.lfhost.com/clocktowers/ELF.fla
woad
April 6, 2006, 2:59am
2
Umm, have you looked over the internet? And, i’m actually working on a platformer myself: Here’s the jump code:
if (jumping) {
vel_y -= 1;
if (vel_y<=-10) {
vel_y = -10;
}
this._y -= vel_y;
}
if (Ledge.hitTest(this._x, this._y+this._height/2+15, true)) {
vel_y = 0;
jumping = false;
}
Kardin
April 6, 2006, 9:40pm
3
Gah, forgot to post the code. >_<
onClipEvent (load) {
gravity = 10;
scale = _xscale;
walkSpeed = 6;
maxjump = 6;
}
onClipEvent (enterFrame) {
if (air == true) {
_root.loller1.y -= gravity;
state = 3;
}
if (Key.isDown(Key.LEFT) && !_root.leftbound.hitTest(_x, _y, true)) {
_root.loller1.x += walkSpeed;
_xscale = -scale;
}
if (Key.isDown(Key.RIGHT) && !_root.rightbound.hitTest(_x, _y, true)) {
_root.loller1.x -= walkSpeed;
_xscale = scale;
}
if (_root.loller1.platforms.hitTest(_x, _y, true)) {
air = false;
} else {
air = true;
}
if (Key.isDown(Key.SPACE) && jump == true) {
_root.loller1.y += jumpSpeed;
}
if (air == false) {
jump = true;
jumpcount = 0;
jumpSpeed = 22;
}
if (Key.isDown(Key.SPACE)) {
jumpcount += 1;
}
if (jumpcount > maxjump && jumpSpeed > -2) {
jumpSpeed -= 2;
}
if (air == false && !Key.isDown(Key.LEFT) && !Key.isDown(65) && _currentframe < 4 or air == false && !Key.isDown(Key.RIGHT) && !Key.isDown(65) && _currentframe < 4) {
state = 1;
}
if (Key.isDown(Key.LEFT) && air == false && !Key.isDown(65) && _currentframe < 4 or Key.isDown(Key.RIGHT) && air == false && !Key.isDown(65) && _currentframe < 4) {
state = 2;
}
if (!Key.isDown(65)) {
gotoAndStop(state);
}
_root.statetxt = state;
}
onClipEvent (keyUp) {
if (Key.getCode() == 83) {
jump = false;
}
}
try changing the _root.loller1.x to _root.loller1._x , same with the y’s (to _y)
looks like you are just moving the property x of loller without moving it on stage (_x)
maybe this will answer your question?
Kardin
April 8, 2006, 5:21pm
5
Gah, tried that, still not working. Here’s the Flash file, maybe a look at the whole thing would help. >_<
http://lfs.lfhost.com/clocktowers/ELF.fla
Kardin
April 9, 2006, 11:35pm
6
Alright, I’ve decided to try to use Nathan’s code, but my computer keeps reporting the same syntax error, that being:
[COLOR=red]Error Scene=level 1, layer=Layer 2, frame=1:Line 34: ‘)’ expected
speed++;
Total ActionScript Errors: 1 Reported Errors: 1[/COLOR]
Now, the code in question:
} else if (Key.isDown(Key.RIGHT)) {
if (speed
speed++;
}
Now I have a feeling something is missing, so I try:
} else if (Key.isDown(Key.RIGHT)) {
if (speed<maxmove) {
speed++;
}
I get the following error:
[COLOR=red]Error Scene=level 1, layer=Layer 2, frame=1:Line 7: Statement block must be terminated by '}'
onClipEvent (enterFrame) {
Error Scene=level 1, layer=Layer 2, frame=1:Line 62: Syntax error.
}
Total ActionScript Errors: 2 Reported Errors: 2[/COLOR]
In response to which I try adding a } on the last line.
…And then the entire thing goes to hell. Check the links to see the what I mean. o_O;
FLA: http://rapidshare.de/files/17613951/ELF.fla.html
SWF: http://img127.imageshack.us/my.php?image=elf5cf.swf (NOTE: The preloader is a bit glitchy, so just right click and press play after it reaches 90% or so.)
Nich
April 10, 2006, 12:00am
7
Kardin:
Alright, I’ve decided to try to use Nathan’s code, but my computer keeps reporting the same syntax error, that being:
[COLOR=red]Error Scene=level 1, layer=Layer 2, frame=1:Line 34: ‘)’ expected
speed++;
Total ActionScript Errors: 1 Reported Errors: 1[/COLOR]
Now, the code in question:
} else if (Key.isDown(Key.RIGHT)) {
if (speed
speed++;
}
Now I have a feeling something is missing, so I try:
} else if (Key.isDown(Key.RIGHT)) {
if (speed<maxmove) {
speed++;
}
I get the following error:
[COLOR=red]Error Scene=level 1, layer=Layer 2, frame=1:Line 7: Statement block must be terminated by ‘}’
onClipEvent (enterFrame) {
Error Scene=level 1, layer=Layer 2, frame=1:Line 62: Syntax error.
}
Total ActionScript Errors: 2 Reported Errors: 2[/COLOR]
In response to which I try adding a } on the last line.
…And then the entire thing goes to hell. Check the links to see the what I mean. o_O;
FLA: http://rapidshare.de/files/17613951/ELF.fla.html
SWF: http://img127.imageshack.us/my.php?image=elf5cf.swf (NOTE: The preloader is a bit glitchy, so just right click and press play after it reaches 90% or so.)
Try this. Not sure exactly what I did but it seems to work.
http://rapidshare.de/files/17615020/ELF.fla.html
Kardin
April 10, 2006, 1:51am
8
Geh, it still has some glitches. He only faces right, and only falls when he jumps. >_<
what I would do, is, make 2 mcs, the characer instance name, c, and the ground, instance name, gr;
then I woukld modify this code;
sh = 20, c.ysp=4
c.onEnterFrame = function() {
Key.isDown(Key.UP) && !jumping ? (jumping=true, jump=-20) : !gr.hitTest(this._x, this._y+1, true) && !jumping ? this._y+=this.ysp++ : null;
jumping ? ((!Key.isDown(Key.UP) && jump<=-3 ? jump *= .5 : null), (jump<=-3 ? this._y += (jump *= .85) : jump>-3 ? this._y += (jump++) : null)) : null;
Key.isDown(Key.LEFT) && !gr.hitTest(this.getBounds(_root).xMin, this._y-sh, true) ? this._x -= 3 : Key.isDown(Key.RIGHT) && !gr.hitTest(this.getBounds(_root).xMax, this._y-sh, true) ? this._x += 3 : null;
while (gr.hitTest(this._x, this._y, true)) {
this._y--, this.ysp = 4, jump=jumping=false;
}
};
Kardin
April 10, 2006, 11:48pm
10
See, thing is I’m very new to actionscript, and wouldn’t know what to change. My main problem with that code is that my game is intented to be a sidescroller. >_<
how exactly do you want it?
Kardin
April 12, 2006, 12:44am
12
So that the screen follows the character across the level, and that the character us always centered on the screen.
sh = 20, c.ysp=4
c.onEnterFrame = function() {
Key.isDown(Key.UP) && !jumping ? (jumping=true, jump=-20) : !gr.hitTest(this._x, this._y+1, true) && !jumping ? this._y+=this.ysp++ : null;
jumping ? ((!Key.isDown(Key.UP) && jump<=-3 ? jump *= .5 : null), (jump<=-3 ? this._y += (jump *= .85) : jump>-3 ? this._y += (jump++) : null)) : null;
Key.isDown(Key.LEFT) && !gr.hitTest(this.getBounds(_root).xMin, this._y-sh, true) ? gr._x += 3 : Key.isDown(Key.RIGHT) && !gr.hitTest(this.getBounds(_root).xMax, this._y-sh, true) ? gr._x -= 3 : null;
while (gr.hitTest(this._x, this._y, true)) {
this._y--, this.ysp = 4, jump=jumping=false;
}
};