Pico-8 aiming at target proof of concept
I'm working on creating enemies that aim at the player and shoot in my current game project next so I put together this little proof of concept to make sure I understood how to do it.
You can check out the current release of the project this poc was made for here: https://eschmiel.itch.io/pov-there-is-a-bug-in-your-house
The poc is interative. Arrow keys move the target and 'z' shoot a projectile at it.
I'm posting all of the code for this project below but you can also look at it in this github repo: https://github.com/eschmiel/aiming-proof-of-concept---pico8
Follow me on Twitter: https://x.com/eschmiel
function _init()
origin = {30,30}
target = {80,80}
vector = get_vector(origin,target)
calc_target = {
origin[1]+vector[1],
origin[2]+vector[2]
}
unit_vector = get_unit_vector(vector)
projectiles={}
end
function _update()
vector = get_vector(origin,target)
calc_target = {
origin[1]+vector[1],
origin[2]+vector[2]
}
unit_vector = get_unit_vector(vector)
for p in all(projectiles) do
p:update()
end
if(btnp(4)) mk_projectile()
if(btn(0)) target[1]-=1
if(btn(1)) target[1]+=1
if(btn(2)) target[2]-=1
if(btn(3)) target[2]+=1
end
function _draw()
cls()
rectfill(
origin[1],
origin[2],
origin[1],
origin[2],
8
)
rectfill(
target[1],
target[2],
target[1],
target[2],
7
)
print('origin: '..origin[1]..', '..origin[2],
10,70)
print('target: '..target[1]..', '..target[2],
10,80)
print('vector: '..vector[1]..', '..vector[2],
10,90)
print('calculated target: '..calc_target[1]..', '..calc_target[2],
10,100)
print('unit vector to target: ',
10,110)
print(unit_vector[1]..', '..unit_vector[2],
10,120)
for p in all(projectiles) do
p:draw()
end
end
function get_vector(o,t)
return {t[1]-o[1],t[2]-o[2]}
end
function get_unit_vector(v)
magnitude = sqrt(v[1]*v[1] + v[2]*v[2])
return {v[1]/magnitude, v[2]/magnitude}
end
function mk_projectile()
local v = get_vector(origin,target)
local uv = get_unit_vector(v)
add(projectiles,
{
speed=2,
x=origin[1],
y=origin[2],
direction=uv,
update=function(self)
self.x+=self.direction[1]*self.speed
self.y+=self.direction[2]*self.speed
end,
draw=function(self)
rectfill(self.x,self.y,self.x,self.y,9)
end
}
)
end| Status | Prototype |
| Platforms | HTML5 |
| Author | Eric Schmiel |
| Genre | Shooter |
| Made with | PICO-8 |
| Tags | Game engine, PICO-8, Prototype, Shoot 'Em Up |

Comments
Log in with itch.io to leave a comment.
Hi. Could u please provide a png (pico8 cart) or windows (exe) downloadable link for the game?