Skip to content
ClaudeUnreal
GitHub

Physics

14 tools — 0 typed MCP · 14 via cu CLI.

  • Physics — Collision — 5 tools
  • Physics — Physics Asset — 3 tools
  • Physics — Constraints — 3 tools
  • Physics — Scene Physics — 3 tools

Configure collision presets (BlockAll, OverlapAll, Trigger) on actors or Blueprint components.

@mcp.tool()
@showcase(
"Configure collision presets (BlockAll, OverlapAll, Trigger) on actors or Blueprint components.",
featured=True,
)
def set_collision_preset(
ctx: Context,
preset_name: str,
actor_name: str = None,
blueprint_name: str = None,
component_name: str = None,
) -> ToolResult:
"""[Physics] Set a collision preset on a component.
For scene actors, targets root component unless component_name given.
For blueprints, component_name is required. preset_name must be a
registered profile (built-ins: BlockAll, OverlapAll, Trigger, NoCollision,
Pawn, PhysicsActor, etc.) — unknown names silently fall back to NoCollision.
Only PrimitiveComponents accepted.
Example: `set_collision_preset("BlockAll", actor_name="MyCube")`
"""
from claude_unreal_server import get_unreal_connection
try:
unreal = get_unreal_connection()
if not unreal:
return err("Failed to connect to Unreal Engine")
params = {"preset_name": preset_name}
if actor_name is not None:
params["actor_name"] = actor_name
if blueprint_name is not None:
params["blueprint_name"] = blueprint_name
if component_name is not None:
params["component_name"] = component_name
response = unreal.send_command("set_collision_preset", params)
if not response:
return err("Failed to set collision preset: no response from Unreal Engine")
if response.get("status") == "error":
return err("Failed to set collision preset", error=response.get("error", "Unknown error"))
result = response.get("result", response)
return ok(f"Set collision preset '{preset_name}'", **result)
except Exception as e:
logger.error(f"Error in set_collision_preset: {e}")
return err("Failed to set collision preset", error=str(e))