SuperAPI AI 工具集

player-physics

通用与其它

查看项目

更新于 10-15 20:34

技能介绍

用途:通过 @dcl/sdk/ecs 的 Physics API 对本地玩家角色施加物理力,全部操作只影响本地玩家。玩家在 engine.PlayerEntity 上的 Transform 由引擎控制、场景代码只读,用 Transform.getMutable 或直接改 position 均无效,因此抬升、漂浮、推、击退等持续受力都应使用本技能。瞬时传送到指定位置则用 ~system/RestrictedActions 的 movePlayerTo。

主要能力:applyImpulseToPlayer 施加一次性瞬时推力,方向在单独传 magnitude 时自动归一化,同帧多次调用会累加;applyKnockbackToPlayer 从源点把玩家推开,方向由源点到玩家自动计算,支持 KnockbackFalloff 的 CONSTANT、LINEAR、INVERSE_SQUARE 三种衰减,负 magnitude 变成吸引;applyForceToPlayer 与 removeForceFromPlayer 以实体为标识施加/移除持续方向力,不同实体的力独立叠加;applyForceToPlayerForDuration 施加定时力并自动过期;applyRepulsionForceToPlayer 从固定点按距离衰减逐帧重算推力;Transform.localToWorldDirection 把局部方向转为世界方向。

使用方式:力调用属于运行时逻辑,放在 src/index.ts;触发实体(发射台、风道区域、排斥场标记)作为静态摆放放在 main-entities.ts,带 Transform 及可选 MeshRenderer 或 GltfContainer,再在 index.ts 中绑定指针或邻近事件调用 Physics 方法。触发回调中应判断 result.trigger?.entity !== engine.PlayerEntity,以确保只影响本地玩家。区域效果建议用 LINEAR 衰减,一次性事件用冲量,持续区域用 applyForceToPlayer 搭配 removeForceFromPlayer。

限制:资料未提供具体参数默认值以外的价费用、平台版本或效果保证。