Hello, i'm rather new to this and I am having issues firing a projectile when I press the z key. This is in a simple game I am making. My code is below:
x = 64 y = 64 function _update() if (btn(0)) then x=x-1 end if (btn(1)) then x=x+1 end if (btn(2)) then y=y-1 end if (btn(3)) then y=y+1 end if (btn(4)) then shoot(x,y) end end function _draw() circfill(x,y,7,8) end function shoot(bullx,bully) local x = bullx local y = bully local k = y while k <= 128 do k = k + 1 end end |
Currently It just flys off the screen super quick, how would i slow it down?
Where do you draw the bullet? The only drawing call I see is "circfill", which I guess is the player?
When you fire the bullet, you're using a while loop, but that means that the bullet will move all the way off the screen in one frame. You need to update the bullet position each frame (just like the character).
I think you want it to look something more like this:
player={x=64,y=120) shots={} function _update() if btn(0) then player.x-=1 end if btn(1) then player.x+=1 end if btn(4) then add(shots, {x=player.x, y=player.y}) end for s in all(shots) do s.y-=1 end end function _draw() cls() spr(0, player.x, player.y) for s in all(shots) do spr(1, s.x, s.y) end end |
Note: I have not run this code. It may have bugs. (It may be illustrative, even if it has bugs.) If you want something that definitely works, a better course of action is to open up a cart (that works) and look at the code.
Thanks For The Help, John, your example helped me a lot. Im not used to this development platform, and it is different from what i usually do(c# in visual studio). I understand where i went wrong now.
[Please log in to post a comment]