diff --git a/main.go b/main.go index 91e9ff4..c63c33f 100644 --- a/main.go +++ b/main.go @@ -58,27 +58,25 @@ func drawRec(rectangle *quad) { } func obstacleReflect(particlePos rl.Vector2, particleSpeed *rl.Vector2, obstacles *([MAXOBSTACLES](*quad)), particleRadius *float32, obstacleCount *int) { + var friction float32 = 0.9 + for k := 0; k < *obstacleCount; k++ { if rl.CheckCollisionCircleLine(particlePos, *particleRadius, (*((*obstacles)[k])).lu, (*((*obstacles)[k])).ru) { var floorVector rl.Vector2 = rl.Vector2Subtract((*((*obstacles)[k])).ru, (*((*obstacles)[k])).lu) var normalFloor rl.Vector2 = rl.Vector2Normalize(rl.Vector2Rotate(floorVector, -PI/2)) - //var collisionAngle float32 = 2 * rl.Vector2Angle(rl.Vector2Negate(particleSpeed[i]), normalFloor) - *particleSpeed = rl.Vector2Reflect(*particleSpeed, normalFloor) + *particleSpeed = rl.Vector2Scale(rl.Vector2Reflect(*particleSpeed, normalFloor), friction) } else if rl.CheckCollisionCircleLine(particlePos, *particleRadius, (*((*obstacles)[k])).ru, (*((*obstacles)[k])).rd) { var floorVector rl.Vector2 = rl.Vector2Subtract((*((*obstacles)[k])).rd, (*((*obstacles)[k])).ru) var normalFloor rl.Vector2 = rl.Vector2Normalize(rl.Vector2Rotate(floorVector, -PI/2)) - //var collisionAngle float32 = 2 * rl.Vector2Angle(rl.Vector2Negate(particleSpeed[i]), normalFloor) - *particleSpeed = rl.Vector2Reflect(*particleSpeed, normalFloor) + *particleSpeed = rl.Vector2Scale(rl.Vector2Reflect(*particleSpeed, normalFloor), friction) } else if rl.CheckCollisionCircleLine(particlePos, *particleRadius, (*((*obstacles)[k])).rd, (*((*obstacles)[k])).ld) { var floorVector rl.Vector2 = rl.Vector2Subtract((*((*obstacles)[k])).ld, (*((*obstacles)[k])).rd) var normalFloor rl.Vector2 = rl.Vector2Normalize(rl.Vector2Rotate(floorVector, -PI/2)) - //var collisionAngle float32 = 2 * rl.Vector2Angle(rl.Vector2Negate(particleSpeed[i]), normalFloor) - *particleSpeed = rl.Vector2Reflect(*particleSpeed, normalFloor) + *particleSpeed = rl.Vector2Scale(rl.Vector2Reflect(*particleSpeed, normalFloor), friction) } else if rl.CheckCollisionCircleLine(particlePos, *particleRadius, (*((*obstacles)[k])).ld, (*((*obstacles)[k])).lu) { var floorVector rl.Vector2 = rl.Vector2Subtract((*((*obstacles)[k])).lu, (*((*obstacles)[k])).ld) var normalFloor rl.Vector2 = rl.Vector2Normalize(rl.Vector2Rotate(floorVector, -PI/2)) - //var collisionAngle float32 = 2 * rl.Vector2Angle(rl.Vector2Negate(particleSpeed[i]), normalFloor) - *particleSpeed = rl.Vector2Reflect(*particleSpeed, normalFloor) + *particleSpeed = rl.Vector2Scale(rl.Vector2Reflect(*particleSpeed, normalFloor), friction) } } }