ID:2381799
 
(See the best response by Kaiochao.)
mob/combative/player //character hit box and stuff
icon='Base/PlayerBase.dmi'
density = 1

bound_x = 9
bound_y = 1
bound_width = 10
bound_height = 26

mob/proc //testing a fireball throw
Fire_Fireball()
var/obj/Fire_Ball/L = object_unPool("Fire Ball", /obj/Fire_Ball, loc)
L.SetCenter(Cx(), Cy(), z)
L.Owner = src
walk(L,dir,0,48) //move 48 pixels, so the fireball is fast

obj
Fire_Ball
icon = 'Test.dmi'
density = 1
//
bound_x = 8
bound_y = 8
bound_width = 16
bound_height = 16
//
Bump(A) //if it hits something
world << "COLLIDED"


Problem description:

Hello, I'm just getting into pixel projectiles, and I'm having issues with collisions. Sometimes, the fire ball will run into a player and hit just fine. Other time, it just moves right through it and doesn't detect a collision. I'm not quite sure why this is happening. It occurs at different distances I've noticed, if I'm up really close, it seems to collide just fine. But when I'm at a farther away distance, the fire ball sometimes goes right through the player

Best response
Try setting the fireball's step_size to 48.
That seems to fix it. That's strange, there shouldn't be a difference. A bug, perhaps?
In response to Vincent916
Probably not a bug, just a not-so-great way of doing things.

In pixel movement, there's two ways to move (with collision detection): jumping and sliding.

Jumping lets things jump over obstacles as long as the destination is clear (and the starting location allows exit).

Sliding detects collisions along the straight line of travel.

The DM Reference explains this in its pixel movement pages, but sliding happens when step_size is greater than or equal to the number of pixels being moved. Jumping happens when moving greater than the step_size.
I see. I'll definitely give the dm reference a read on the subject. Thank you for the quick help