Log In  


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]