add collision readme
This commit is contained in:
@@ -15,8 +15,9 @@ ecs-framework 的目标是成为功能强大的框架。它为您构建游戏提
|
|||||||
- [创建系统](docs/system.md)
|
- [创建系统](docs/system.md)
|
||||||
- [全局时间Time](docs/time.md)
|
- [全局时间Time](docs/time.md)
|
||||||
- [协程Coroutine](docs/coroutine.md)
|
- [协程Coroutine](docs/coroutine.md)
|
||||||
- [Physics/Collision](docs/physics.md)
|
- [Physics](docs/physics.md)
|
||||||
- [Emitter](docs/emitter.md)
|
- [Emitter](docs/emitter.md)
|
||||||
|
- [Collision](docs/collision.md)
|
||||||
|
|
||||||
## 交流群
|
## 交流群
|
||||||
点击链接加入群聊【ecs游戏框架交流】:https://jq.qq.com/?_wv=1027&k=29w1Nud6
|
点击链接加入群聊【ecs游戏框架交流】:https://jq.qq.com/?_wv=1027&k=29w1Nud6
|
||||||
|
|||||||
70
docs/collision.md
Normal file
70
docs/collision.md
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# Collision
|
||||||
|
碰撞检测在大多数游戏中都很常见。框架内使用了一些更先进的碰撞/重叠检查方法,如Minkowski、分离轴定理和古老的三角法
|
||||||
|
|
||||||
|
## 线与线相交 [lineToLine]
|
||||||
|
- 返回是否相交
|
||||||
|
```typescript
|
||||||
|
const a1 = new es.Vector2(0, 0);
|
||||||
|
const a2 = new es.Vector2(100, 100);
|
||||||
|
const b1 = new es.Vector2(-100, 0);
|
||||||
|
const b2 = new es.Vector2(100, 200);
|
||||||
|
const result = es.Collisions.lineToLine(a1, a2, b1, b2);
|
||||||
|
```
|
||||||
|
- 返回是否相交并获得相交的点
|
||||||
|
```typescript
|
||||||
|
const a1 = new es.Vector2(0, 0);
|
||||||
|
const a2 = new es.Vector2(100, 100);
|
||||||
|
const b1 = new es.Vector2(-100, 0);
|
||||||
|
const b2 = new es.Vector2(100, 200);
|
||||||
|
// 相交的点坐标
|
||||||
|
const intersection = new es.Vector2();
|
||||||
|
const result = es.Collisions.lineToLineIntersection(a1, a2, b1, b2, intersection);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 圆和圆相交 [circleToCircle]
|
||||||
|
```typescript
|
||||||
|
const center1 = new es.Vector2(0, 0);
|
||||||
|
const radius1 = 50;
|
||||||
|
const center2 = new es.Vector2(30, 30);
|
||||||
|
const radius2 = 50;
|
||||||
|
const result = es.Collisions.circleToCircle(center1, radius1, center2, radius2);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 圆和线相交 [circleToLine]
|
||||||
|
```typescript
|
||||||
|
const center1 = new es.Vector2(0, 0);
|
||||||
|
const radius1 = 50;
|
||||||
|
const a1 = new es.Vector2(0, 0);
|
||||||
|
const a2 = new es.Vector2(100, 100);
|
||||||
|
const result = es.Collisions.circleToLine(center1, radius1, a1, a2);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 点是否在圆内 [circleToPoint]
|
||||||
|
```typescript
|
||||||
|
const center1 = new es.Vector2(0, 0);
|
||||||
|
const radius1 = 50;
|
||||||
|
const point = new es.Vector2(0, 0);
|
||||||
|
const result = es.Collisions.circleToPoint(center1, radius1, point);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 圆是否和矩形相交 [rectToCircle]
|
||||||
|
```typescript
|
||||||
|
const rect = new es.Rectangle(0, 0, 100, 100);
|
||||||
|
const center = new es.Vector2(30, 30);
|
||||||
|
const radius = 50;
|
||||||
|
const result = es.Collisions.rectToCircle(rect, center, radius);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 矩形与线是否相交 [rectToLine]
|
||||||
|
```typescript
|
||||||
|
const rect = new es.Rectangle(0, 0, 100, 100);
|
||||||
|
const a1 = new es.Vector2(0, 0);
|
||||||
|
const a2 = new es.Vector2(100, 100);
|
||||||
|
const result = es.Collisions.rectToLine(rect, a1, a2);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 点是否在矩形内 [rectToPoint]
|
||||||
|
```typescript
|
||||||
|
const point = new es.Vector2(100, 100);
|
||||||
|
const result = es.Collisions.rectToPoint(0, 0, 100, 100, point);
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user