修复RealtimeCollisions.intersectMovingCircleBox计算问题

This commit is contained in:
yhh
2020-12-09 17:56:48 +08:00
parent 838795fd34
commit 24da0b79c2
6 changed files with 54 additions and 37 deletions

View File

@@ -2,7 +2,7 @@ module es {
export class RealtimeCollisions {
public static intersectMovingCircleBox(s: Circle, b: Box, movement: Vector2, time: Ref<number>): boolean {
// 计算将b按球面半径r扩大后的AABB
let e = b.bounds;
let e = b.bounds.clone();
e.inflate(s.radius, s.radius);
// 将射线与展开的矩形e相交如果射线错过了e则以无交点退出否则得到交点p和时间t作为结果。
@@ -11,7 +11,7 @@ module es {
return false;
// 求交点
let point = Vector2.add(ray.start, Vector2.add(ray.direction, new Vector2(time.value)));
let point = Vector2.add(ray.start, Vector2.multiply(ray.direction, new Vector2(time.value)));
// 计算交点p位于b的哪个最小面和最大面之外。注意u和v不能有相同的位集它们之间必须至少有一个位集。
let u, v = 0;