fix collision detection
This commit is contained in:
parent
3db46e2436
commit
040a878b41
1 changed files with 5 additions and 9 deletions
|
@ -844,25 +844,21 @@ checkBoundsCollision2
|
||||||
-> V2 Double
|
-> V2 Double
|
||||||
checkBoundsCollision2
|
checkBoundsCollision2
|
||||||
pre@(V2 pr pc) nex dt acc (Boundaries (minr, minc) (maxr, maxc))
|
pre@(V2 pr pc) nex dt acc (Boundaries (minr, minc) (maxr, maxc))
|
||||||
| colltr < dt && colltc < dt = V2 0 0
|
| colltr < dt || colltc < dt = V2 0 0
|
||||||
| colltr < dt && incol = V2 0 1 * acc
|
|
||||||
| colltc < dt && inrow = V2 1 0 * acc
|
|
||||||
| otherwise = acc
|
| otherwise = acc
|
||||||
where
|
where
|
||||||
V2 vr vc = fmap (/ dt) (nex - pre)
|
V2 vr vc = fmap (/ dt) (nex - pre)
|
||||||
colltr
|
colltr
|
||||||
| vr > 0 && prr <= maxr =
|
| vr > 0 && prr < maxr && (prc > minc && prc < maxc) =
|
||||||
((fromIntegral (floor pr :: Int) + minr - 0.15) - pr) / vr
|
((fromIntegral (floor pr :: Int) + minr - 0.15) - pr) / vr
|
||||||
| vr < 0 && prr >= minr =
|
| vr < 0 && prr > minr && (prc > minc && prc < maxc) =
|
||||||
((fromIntegral (floor pr :: Int) + maxr + 0.15) - pr) / vr
|
((fromIntegral (floor pr :: Int) + maxr + 0.15) - pr) / vr
|
||||||
| otherwise = dt
|
| otherwise = dt
|
||||||
colltc
|
colltc
|
||||||
| vc > 0 && prc <= maxc =
|
| vc > 0 && prc < maxc && (prr > minr && prr < maxr) =
|
||||||
((fromIntegral (floor pc :: Int) + minc - 0.15) - pc) / vc
|
((fromIntegral (floor pc :: Int) + minc - 0.15) - pc) / vc
|
||||||
| vc < 0 && prc >= minc =
|
| vc < 0 && prc > minc && (prr > minr && prr < maxr) =
|
||||||
((fromIntegral (floor pc :: Int) + maxc + 0.15) - pc) / vc
|
((fromIntegral (floor pc :: Int) + maxc + 0.15) - pc) / vc
|
||||||
| otherwise = dt
|
| otherwise = dt
|
||||||
inrow = pr > minr && pr < maxr
|
|
||||||
incol = pc > minc && pc < maxc
|
|
||||||
prr = pr - fromIntegral (floor pr :: Int)
|
prr = pr - fromIntegral (floor pr :: Int)
|
||||||
prc = pc - fromIntegral (floor pc :: Int)
|
prc = pc - fromIntegral (floor pc :: Int)
|
||||||
|
|
Loading…
Reference in a new issue