Hello, As I'm learning the new ECS ways, I thought it would be fun to replicate a bowling game. Unfortunately I ran into problems when using the Unity Physics ApplyImpulse() function; the ball just 'jumps' from the floor instead of launching forward and I can't tell why. From the beginning: I made some sort of slingshot mechanism using the 'MousePickBehaviour' script as an example, so I ended up with 2 systems: 1. Begging of the shot - updates a component native array copy with a start position (from a mouse click), does a ray cast job to get the entity touched at the start position and calculates the point in world, body from world and point on body (pretty much copy/paste from 'MousePicker') 2. End of the shot - updates a component native array copy with the end position (from a mouse release) and the difference between start and final points A 3rd system is used to apply the impulse on the ball and this one was inspired by the PhysicsExamples Demo number 5 - Apply Impulse case So this 3rd system receives references to the above mentioned systems and replicates the same behaviour as 'LinearDashpotBehaviour' script and at the end applies an impulse. The problem is that the ball 'jumps' and is not sliding on the 'floor'. Force calculus: Code (CSharp): var deltaX = EndPosition.x - StartPosition.x; var deltaZ = EndPosition.z - StartPosition.z; var strenght = sqrt(deltaX * deltaX + deltaZ * deltaZ); var direction = mouseStartPosition - mouseEndPosition; var force = 5.0f * strenght * (direction / sqrt(lengthsq(direction))); Relevant calculus in system no 3: Code (CSharp): int rigidBodyIndex = world.GetRigidBodyIndex(StartSystem.ShotStartDatas.Entity); RigidBody rb = rigidBodyIndex >= 0 ? world.Bodies[rigidBodyIndex] : RigidBody.Zero; var pos = math.transform(rb.WorldFromBody, StartSystem.ShotStartDatas.PointOnBody); var linearV = world.GetLinearVelocity(rigidBodyIndex); var impulse = EndSystem.ShotEndDatas.Force + 0.5f * linearV; world.ApplyImpulse(rigidBodyIndex, impulse, pos); PS: When I change the world.ApplyImpulse to world.SetLinearVelocity I get the behaviour I want (the ball slides) however there's no angular movement (as expected in linear velocity) Please help me understand the correct way of using ApplyImpulse for my needs.