Die Oberfläche ist lokalisiert; Skill-Beschreibungen und -Dokumente werden per KI automatisch in Ihre Sprache übersetzt. Code, Befehle, Pfade und Fachbegriffe bleiben im Original, maßgeblich ist das Dokument des Autors.
Skills entdecken
Produktivität · SKILL.md

unity-physics

unity-physics

Run Unity physics queries and configure physics

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill-Dokumentation

GitHub

name: unity-physics description: Run Unity physics queries and configure physics

Before calling any skill in this module: if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via GET /skills/recommend?includeSchema=true) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.

Triggers

  • Casting rays
  • Testing overlaps
  • Querying colliders
  • Adjusting gravity/physics settings
  • 发射射线、检测重叠、查询碰撞体、调整重力/物理设置

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, collider } — material is the resolved asset path read back from the collider, and collider is the collider component's type name (e.g. BoxCollider).

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.

Common Errors

Full transport-level codes (COMPILING/RATE_LIMIT etc.) → ../../references/protocol-error-codes.md

ErrorTriggerFix
SEMANTIC_INVALIDAn invalid value was supplied, such as a zero direction vector, a name containing path separators, or an out-of-range parameter.Provide a non-zero direction, remove path separators from the material name, and clamp values to the valid range.
TARGET_NOT_FOUNDThe target GameObject has no Collider, or the requested PhysicMaterial asset could not be loaded.Add a collider via component_add or verify the material path with asset_find, then retry.
MISSING_PARAMA required parameter is missing, such as name in physics_create_material.Provide the parameter named in the error; use mode=dryRun for the schema.
Gespeicherte Skills