Skip to content

Commit 8fd8f74

Browse files
committed
update physics
1 parent 95b8dc7 commit 8fd8f74

File tree

5 files changed

+7304
-6540
lines changed

5 files changed

+7304
-6540
lines changed

docs/physics.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ SpatialHash有一个可配置的方面,它可以极大地影响其性能:单
2121
### 使用物理系统
2222
射线检测对于检查敌人的视线、探测实体的空间环境、快速移动的子弹等各种事情都非常有用。下面是一个从头到尾投射线条的示例,如果击中某个物体,它只会记录数据:
2323
```ts
24-
const hit = Physics.linecast( start, end );
25-
if( hit.Collider != null )
24+
const hit = es.Physics.linecast( start, end );
25+
if( hit.collider != null )
2626
console.log( `ray hit ${hit}, entity: {hit.collider.entity}`);
2727
```
2828

@@ -35,14 +35,14 @@ if( hit.Collider != null )
3535
let collisionResult = null;
3636

3737
// 进行检查以查看entity.getComponent(Collider)(实体上的第一个碰撞器)是否与场景中的任何其他碰撞器发生碰撞。请注意,如果您有多个碰撞器,则可以获取并遍历它们,而不是仅检查第一个碰撞器。
38-
if( entity.getComponent(Collider).collidesWithAny( deltaMovement, collisionResult ) )
38+
if( entity.getComponent(es.Collider).collidesWithAny( deltaMovement, collisionResult ) )
3939
{
4040
// 记录CollisionResult。 您可能需要使用它来添加一些粒子效果或与您的游戏相关的任何其他内容。
4141
console.log( `collision result: ${collisionResult}` );
4242
}
4343

4444
// 将实体移到新位置。 已经调整了deltaMovement为我们解决冲突。
45-
entity.position = Vector2.add(entity.position, deltaMovement);
45+
entity.position = entity.position.add(deltaMovement);
4646
```
4747

4848
如果您需要对碰撞发生时的情况进行更多控制,则也可以手动检查是否与其他collider发生碰撞。 请注意,执行此操作时,deltaMovement不会为您调整。 解决冲突时,您需要考虑最小平移矢量。
@@ -51,23 +51,23 @@ entity.position = Vector2.add(entity.position, deltaMovement);
5151
let collisionResult = null;
5252

5353
// 进行检查以查看entity.getComponent<Collider>是否与一些其他Collider发生碰撞
54-
if( entity.getComponent(Collider).collidesWith( someOtherCollider, deltaMovement, collisionResult ) )
54+
if( entity.getComponent(es.Collider).collidesWith( someOtherCollider, deltaMovement, collisionResult ) )
5555
{
5656
// 将实体移动到与命中Collider相邻的位置,然后记录CollisionResult
57-
entity.position = Vector2.add(entity.position, Vector2.substract(deltaMovement, collisionResult.minimumTranslationVector));
57+
entity.position = entity.position.add(deltaMovement.sub(collisionResult.minimumTranslationVector));
5858
console.log( `collision result: ${collisionResult}` );
5959
}
6060
```
6161
我们可以使用前面提到的Physics.boxcastBroadphase方法或更具体地讲,将自身排除在查询之外的版本,使上述示例更进一步。 该方法将为我们提供场景中所有在我们附近的collider,然后我们可以使用这些对撞机进行实际的碰撞检查。
6262

6363
```ts
6464
// 在我们自身以外的位置获取可能与之重叠的任何东西
65-
let neighborColliders = Physics.boxcastBroadphaseExcludingSelf( entity.getComponent(Collider) );
65+
let neighborColliders = es.Physics.boxcastBroadphaseExcludingSelf( entity.getComponent(es.Collider) );
6666

6767
// 遍历并检查每个对撞机是否重叠
6868
for( let collider of neighborColliders )
6969
{
70-
if( entity.getComponent(Collider).overlaps( collider ) )
70+
if( entity.getComponent(es.Collider).overlaps( collider ) )
7171
console.log( `我们正在重叠一个collider : ${collider}` );
7272
}
7373
```

docs/render.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
## 渲染框架
2+
为了方便快速与引擎对接使用,框架内置了一套渲染框架,它仅仅只有接口,你需要实现框架所需要的内容才可以进行渲染。

0 commit comments

Comments
 (0)