I want to make my own raycaster game in picotron and I have been following this blog written for a pico-8 raycaster. I get an error when I run this and I am not sure what I should do to fix this issue. Help would be much appreciated.
Other than the code, all I did is make a sprite in slot 1 and draw a simple map in the map editor.
function _init() cam={ x=12, y=12, a=0, w2d=2 } scrx=0 end function _update() controls() end function _draw() cls() map(0,0,0,0,16,16) circ(cam.x,cam.y,2,12) --for scrx=0,480 do -- raycast(cam,scrx) --end raycast(cam,240) end function controls() if btn(0) then cam.a+=0.01 end if btn(1) then cam.a-=0.01 end if btn(2) then cam.x+=cos(cam.a)*0.5 cam.y+=sin(cam.a)*0.5 end if btn(3) then cam.x+=cos(cam.a)*-0.25 cam.y*=sin(cam.a)*-0.25 end end function raycast(cam,scrx) local rayvx,rayvy= cam.vx-cam.vy*cam.w2d*(scrx-64)/128, cam.vy+cam.vx*cam.w2d*(scrx-64)/128 -- distance traveled local dist=0 -- current coordinates local x,y=cam.x,cam.y -- map cel coordinate and value local celx,cely=x8,y8 local cel=mget(celx,cely) -- direction of ray local dirx,diry= sgn(rayvx),sgn(rayvy) -- distances across map cel local dist4x,dist4y= abs(8/rayvx), abs(8/rayvy) -- distances to next map cel local dx,dy= abs(4+4*dirx-x%8), abs(4+4*diry-y%8) local dist2x,dist2y= abs(dx/rayvx), abs(dy/rayvy) -- which direction / angle -- the wall was hit from local hita=0 -- perform dda repeat if dist2x=64 end |
I am trying to make a top down RPG in Picotron and I want to use a combination of mget() and fget() to make collision. I understand that fget is a bit weird in Picotron but mget is also acting strange as it only reads the sprite numbers of 4 sprites in a 2x2 formation on the 0,0 corner of my map.
Is anyone else experiencing this or could this just be me being silly?
I wrote a function that shows the mouse coordinates and sprite number of the map tile you are hovering over. I originally wrote this for myself to make checking the tiles on my map easier but figured I could share it in case anyone else finds it useful.
function debug_mouse() local mx,my = mouse() local x_offset=5 local y_offset=5 --window width and height local w=480 local h=270 --offset if box leaves screen if mx>w-20 then x_offset=-15 end if my>h-29 then y_offset=-24 end --draw debug text box rectfill(mx+x_offset-1,my+y_offset-1,mx+x_offset+14,my+y_offset+23,1) print(mx,mx+x_offset,my+y_offset,8) print(my,mx+x_offset,my+y_offset+8,9) print(mget(mx,my),mx+x_offset,my+y_offset+8*2,10) end |