2020-07-22 20:07:14 +08:00
|
|
|
|
abstract class Shape {
|
|
|
|
|
|
/** 缓存的形状边界 内部字段 */
|
|
|
|
|
|
public bounds: Rectangle;
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 这不是中心。这个值不一定是物体的中心。对撞机更准确。
|
|
|
|
|
|
* 应用任何转换旋转的localOffset
|
|
|
|
|
|
* 内部字段
|
|
|
|
|
|
*/
|
|
|
|
|
|
public center: Vector2;
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 有一个单独的位置字段可以让我们改变形状的位置来进行碰撞检查,而不是改变entity.position。
|
|
|
|
|
|
* 触发碰撞器/边界/散列更新的位置。
|
|
|
|
|
|
* 内部字段
|
|
|
|
|
|
*/
|
|
|
|
|
|
public position: Vector2;
|
2020-06-12 20:24:51 +08:00
|
|
|
|
|
2020-07-22 20:07:14 +08:00
|
|
|
|
public abstract recalculateBounds(collider: Collider);
|
2020-06-12 20:24:51 +08:00
|
|
|
|
public abstract pointCollidesWithShape(point: Vector2): CollisionResult;
|
2020-06-16 00:04:28 +08:00
|
|
|
|
public abstract overlaps(other: Shape);
|
2020-06-16 11:22:37 +08:00
|
|
|
|
public abstract collidesWithShape(other: Shape): CollisionResult;
|
2020-06-11 20:36:36 +08:00
|
|
|
|
}
|