Skip to content
unity-physics logo

Physics Skills

unity-physics

Unity physics queries and editor-time configuration — raycast/spherecast/boxcast, overlap checks, gravity, PhysicMaterial assets, layer collision matrix. Exact signatures via GET /skills/schema.

SKILL.md

Full skill instructions

Physics Skills

Editor-time physics queries (raycast / overlap), gravity, PhysicMaterial assets, and layer collision matrix.

Operating Mode

  • Approval:查询类 skill(physics_raycast / physics_check_overlap / physics_get_gravity / physics_get_layer_collision 等,源码标 SkillMode.SemiAuto)直接执行;变更类(physics_set_gravity / physics_create_material / physics_set_material / physics_set_layer_collision,标 SkillMode.FullAuto)需用户 grant,grant 后服务端一步执行返结果。
  • Auto / Bypass:所有 skill 直接执行;Auto 走 AI 自我评估,Bypass 全放行。
  • 本模块不含 Delete / PlayMode / Reload / 高危 skill,无 Bypass-only 拦截项。
  • 注意:所有 skill 都在编辑器线程同步运行。真实物理模拟(积分、碰撞响应)仅在 Play mode 下推进;本模块只做单帧 query + 资产/全局设置写入,不会启动模拟。

DO NOT (common hallucinations):

  • physics_add_rigidbody / physics_add_collider do not exist → use component_add with componentType "Rigidbody"/"BoxCollider"/​etc.
  • physics_simulate does not exist → physics simulation runs during Play mode; this module does not step the simulation
  • Raycast results use world-space coordinates

Routing:

  • For adding physics components → use component module
  • For physics material → use physics_create_material (this module)
  • For layer collision matrix → physics_set_layer_collision (this module)

Skills

physics_raycast

Cast a ray and get hit info. Parameters:

  • originX, originY, originZ (float): Origin point.
  • dirX, dirY, dirZ (float): Direction vector.
  • maxDistance (float, optional): Max distance (default 1000).
  • layerMask (int, optional): Layer mask (default -1).

Returns: { hit: true, collider: "Cube", distance: 5.2, ... }

physics_check_overlap

Check for colliders in a sphere. Parameters:

  • x, y, z (float): Center point.
  • radius (float): Sphere radius.
  • layerMask (int, optional): Layer mask.

physics_get_gravity

Get global gravity setting. Parameters: None.

physics_set_gravity

Set global gravity setting. Parameters:

  • x, y, z (float): Gravity vector (e.g. 0, -9.81, 0).

physics_raycast_all

Cast a ray and return ALL hits (penetrating).

ParameterTypeRequiredDefaultDescription
originXfloatYes-Ray origin X
originYfloatYes-Ray origin Y
originZfloatYes-Ray origin Z
dirXfloatYes-Direction X
dirYfloatYes-Direction Y
dirZfloatYes-Direction Z
maxDistancefloatNo1000Max ray distance
layerMaskintNo-1Layer mask filter

Returns: { count, hits: [{ objectName, instanceId, path, point, normal, distance }] }

physics_spherecast

Cast a sphere along a direction and get hit info.

ParameterTypeRequiredDefaultDescription
originXfloatYes-Origin X
originYfloatYes-Origin Y
originZfloatYes-Origin Z
dirXfloatYes-Direction X
dirYfloatYes-Direction Y
dirZfloatYes-Direction Z
radiusfloatYes-Sphere radius
maxDistancefloatNo1000Max cast distance
layerMaskintNo-1Layer mask filter

Returns: { hit, objectName, instanceId, point, distance }

physics_boxcast

Cast a box along a direction and get hit info.

ParameterTypeRequiredDefaultDescription
originXfloatYes-Origin X
originYfloatYes-Origin Y
originZfloatYes-Origin Z
dirXfloatYes-Direction X
dirYfloatYes-Direction Y
dirZfloatYes-Direction Z
halfExtentXfloatNo0.5Box half extent X
halfExtentYfloatNo0.5Box half extent Y
halfExtentZfloatNo0.5Box half extent Z
maxDistancefloatNo1000Max cast distance
layerMaskintNo-1Layer mask filter

Returns: { hit, objectName, instanceId, point, distance }

physics_overlap_box

Check for colliders overlapping a box volume.

ParameterTypeRequiredDefaultDescription
xfloatYes-Box center X
yfloatYes-Box center Y
zfloatYes-Box center Z
halfExtentXfloatNo0.5Box half extent X
halfExtentYfloatNo0.5Box half extent Y
halfExtentZfloatNo0.5Box half extent Z
layerMaskintNo-1Layer mask filter

Returns: { count, colliders: [{ objectName, path, isTrigger }] }

physics_create_material

Create a PhysicMaterial asset.

ParameterTypeRequiredDefaultDescription
namestringNo"New PhysicMaterial"Material name
savePathstringNo"Assets"Save directory path
dynamicFrictionfloatNo0.6Dynamic friction value
staticFrictionfloatNo0.6Static friction value
bouncinessfloatNo0Bounciness value

Returns: { success, path }

physics_set_material

Set PhysicMaterial on a collider (supports name/​instanceId/​path).

ParameterTypeRequiredDefaultDescription
materialPathstringYes-Asset path of the PhysicMaterial
namestringNonullGameObject name
instanceIdintNo0GameObject instance ID
pathstringNonullGameObject hierarchy path

Returns: { success, gameObject, material }

physics_get_layer_collision

Get whether two layers collide.

ParameterTypeRequiredDefaultDescription
layer1intYes-First layer index
layer2intYes-Second layer index

Returns: { layer1, layer2, collisionEnabled }

physics_set_layer_collision

Set whether two layers collide.

ParameterTypeRequiredDefaultDescription
layer1intYes-First layer index
layer2intYes-Second layer index
enableCollisionboolNotrueWhether to enable collision

Returns: { success, layer1, layer2, collisionEnabled }


Minimal Example

import unity_skills

# Raycast from position downward, check for hits
result = unity_skills.call_skill("physics_raycast",
    originX=0, originY=5, originZ=0,
    dirX=0, dirY=-1, dirZ=0,
    maxDistance=10
)
if result.get("hit"):
    print(f"Hit: {result['hitObjectName']} at distance {result['distance']}")

Exact Signatures

Exact names, parameters, defaults, and returns are defined by GET /​skills/​schema or unity_skills.get_skill_schema(), not by this file.