Stopping an object from falling through what is supposed to be the ground
Author |
Message |
Mayb123
|
Posted: Thu Oct 11, 2007 7:18 pm Post subject: Stopping an object from falling through what is supposed to be the ground |
|
|
I am still making the game from earlier posts by me and i'm working on the section of the code to be used for motion and jumping, but before i go any further, i'm just wondering how i would go about stopping an object, in this case a dot, from falling beneath the initial y position of 10, while also being able to jump from the second position after the first jump:
Quote:
setscreen ("graphics:640;480")
var key : array char of boolean
var ground, vcap, x, y, vx, vy, ax, g, charx, chary, carvx : real
const gravity := -0.5
x := 10
y := 10
vx := 1
ax := .8
vy := 5
% g := -0.5
vcap := 10.1
procedure jump
% Makes character jump at the press of the up key.
loop
cls
View.Set ("offscreenonly")
x += vx
y += vy
if round (y)>=10 then
vy += gravity
end if
drawfilloval (round (x), round (y), 2, 2, black)
delay (10)
View.Update
end loop
end jump
procedure crouch
% Makes character crouch on the ground.
end crouch
loop
View.Set ("offscreenonly")
Input.KeyDown (key)
if key (KEY_UP_ARROW) then
jump
elsif key (KEY_DOWN_ARROW) then
crouch
end if
end loop |
|
|
|
|
![](images/spacer.gif) |
Sponsor Sponsor
![Sponsor Sponsor](templates/subSilver/images/ranks/stars_rank5.gif)
|
|
![](images/spacer.gif) |
Saad
![](http://compsci.ca/v3/uploads/user_avatars/182387547249e7ebb91fb8a.png)
|
Posted: Thu Oct 11, 2007 7:20 pm Post subject: RE:Stopping an object from falling through what is supposed to be the ground |
|
|
Your jump procedure has no exit condition, add exit when y <= -10 and reset vy when it happens |
|
|
|
|
![](images/spacer.gif) |
Mayb123
|
Posted: Thu Oct 11, 2007 7:28 pm Post subject: Re: Stopping an object from falling through what is supposed to be the ground |
|
|
true. i blame my negligence. thanks |
|
|
|
|
![](images/spacer.gif) |
Mayb123
|
Posted: Mon Oct 22, 2007 12:44 pm Post subject: Re: RE:Stopping an object from falling through what is supposed to be the ground |
|
|
Saad @ Thu Oct 11, 2007 7:20 pm wrote: Your jump procedure has no exit condition, add exit when y <= -10 and reset vy when it happens
how would i reset the variable? here's the code:
Quote: setscreen ("offscreenonly")
setscreen ("nobuttonbar")
setscreen ("graphics:640;480")
var key : array char of boolean
var chief : array 1 .. 5 of int
var ground, vcap, x, y, vx, vy, ax, g, charx, chary, carvx : real
const gravity := -6
const decel := 0.95
var pos : int:=3
chief (1) := Pic.FileNew ("MC sprite lsiderun.bmp")
chief (2) := Pic.FileNew ("MC sprite lside.bmp")
chief (3) := Pic.FileNew ("MC sprite.bmp")
chief (4) := Pic.FileNew ("MC sprite rside.bmp")
chief (5) := Pic.FileNew ("MC sprite rsiderun.bmp")
x := 10
y := 10
vx := 0
ax := .1
vy := 0
loop
Input.KeyDown (key)
cls
if key (KEY_RIGHT_ARROW) and vx <= 5 then
vx += 0.099
pos := 4
else
vx *= decel
end if
if key (KEY_LEFT_ARROW) and vx >= -5 then
vx -= 0.099
pos := 2
else
vx *= decel
end if
if key (KEY_UP_ARROW) then % Here's the code portion
vy := 5
end if
if round (y) >= 10 then
vy +=gravity
end if
if y = 10 then
vy := 0
end if % Ends here
if round (x) >= 633 and round (x) <= 640 then
x := 8
end if
if round (x) <= 7 and round (x) >= 0 then
x := 632
end if
x += vx
y += vy
% drawfilloval (round (x), round (y), 2, 2, black)
Pic.Draw (chief (pos), round (x), round (y), picMerge)
delay (10)
View.Update
end loop |
|
|
|
|
![](images/spacer.gif) |
Saad
![](http://compsci.ca/v3/uploads/user_avatars/182387547249e7ebb91fb8a.png)
|
Posted: Mon Oct 22, 2007 2:10 pm Post subject: RE:Stopping an object from falling through what is supposed to be the ground |
|
|
When you exit the loop add
vy := <initial y velocity>
y := <initial height before jump |
|
|
|
|
![](images/spacer.gif) |
|
|