SuperAPI AI Directory

unity-physics

General & other

View repository

Updated 10-15 17:25

About this skill

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
  • Cast rays, detect overlaps, query colliders, adjust gravity/physics settings
Physics Skills

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

Operating Mode

  • Approval: query-type skills (physics_raycast / physics_check_overlap / physics_get_gravity / physics_get_layer_collision etc., source marked SkillMode.SemiAuto) execute directly; mutation-type (physics_set_gravity / physics_create_material / physics_set_material / physics_set_layer_collision, marked SkillMode.FullAuto) require user grant, and after grant the server executes in one step and returns the result.
  • Auto / Bypass: all skills execute directly; Auto goes through AI self-assessment, Bypass allows all.
  • This moduledoes not contain Delete / PlayMode / Reload / high-risk skills, and has no Bypass-only interception items.
  • Note: all skills run synchronously on the editor thread. Real physics simulation (integration, collision response) only advances in Play mode; this module only performs single-frame query + asset/global settings writes, and will not start simulation.

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).

Parameter Type Required Default Description
originX float Yes - Ray origin X
originY float Yes - Ray origin Y
originZ float Yes - Ray origin Z
dirX float Yes - Direction X
dirY float Yes - Direction Y
dirZ float Yes - Direction Z
maxDistance float No 1000 Max ray distance
layerMask int No -1 Layer mask filter

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

physics_spherecast

Cast a sphere along a direction and get hit info.

Parameter Type Required Default Description
originX float Yes - Origin X
originY float Yes - Origin Y
originZ float Yes - Origin Z
dirX float Yes - Direction X
dirY float Yes - Direction Y
dirZ float Yes - Direction Z
radius float Yes - Sphere radius
maxDistance float No 1000 Max cast distance
layerMask int No -1 Layer mask filter

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

physics_boxcast

Cast a box along a direction and get hit info.

Parameter Type Required Default Description
originX float Yes - Origin X
originY float Yes - Origin Y
originZ float Yes - Origin Z
dirX float Yes - Direction X
dirY float Yes - Direction Y
dirZ float Yes - Direction Z
halfExtentX float No 0.5 Box half extent X
halfExtentY float No 0.5 Box half extent Y
halfExtentZ float No 0.5 Box half extent Z
maxDistance float No 1000 Max cast distance
layerMask int No -1 Layer mask filter

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

physics_overlap_box

Check for colliders overlapping a box volume.

Parameter Type Required Default Description
x float Yes - Box center X
y float Yes - Box center Y
z float Yes - Box center Z
halfExtentX float No 0.5 Box half extent X
halfExtentY float No 0.5 Box half extent Y
halfExtentZ float No 0.5 Box half extent Z
layerMask int No -1 Layer mask filter

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

physics_create_material

Create a PhysicMaterial asset.

Parameter Type Required Default Description
name string No "New PhysicMaterial" Material name
savePath string No "Assets" Save directory path
dynamicFriction float No 0.6 Dynamic friction value
staticFriction float No 0.6 Static friction value
bounciness float No 0 Bounciness value

Returns: { success, path }

physics_set_material

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

Parameter Type Required Default Description
materialPath string Yes - Asset path of the PhysicMaterial
name string No null GameObject name
instanceId int No 0 GameObject instance ID
path string No null GameObject 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.

Parameter Type Required Default Description
layer1 int Yes - First layer index
layer2 int Yes - Second layer index

Returns: { layer1, layer2, collisionEnabled }

physics_set_layer_collision

Set whether two layers collide.

Parameter Type Required Default Description
layer1 int Yes - First layer index
layer2 int Yes - Second layer index
enableCollision bool No true Whether 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

Error Trigger Fix
SEMANTIC_INVALID An 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_FOUND The 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_PARAM A required parameter is missing, such as name in physics_create_material. Provide the parameter named in the error; use mode=dryRun for the schema.