Type: concept
Confidence: 0.95
Created: 2026-04-16
Updated: 2026-04-20
Tags: UrhoX物理引擎API陷阱LuaCollisionShape游戏开发

CollisionShape直径参数陷阱

概述

UrhoXCollisionShape 圆形相关 API(SetSphereSetCylinderSetCapsuleSetCone)第一个参数均为直径而非半径,与 Unity 等引擎的习惯相反,是 AI 生成代码时的高频错误来源。

关键内容

受影响的 API

API 第一参数 示例
SetSphere(diameter) 直径 SetSphere(1.0) → 半径 0.5 的球
SetCylinder(diameter, height) 直径, 高度 SetCylinder(1.0, 2.0)
SetCapsule(diameter, height) 直径, 高度 SetCapsule(1.0, 2.0)
SetCone(diameter, height) 直径, 高度 SetCone(1.0, 2.0)

错误现象

碰撞体只有可视模型的一半大小,导致角色穿模或物体落入地面。

根本原因

正确用法

-- ❌ 错误:把直径参数当半径用
shape:SetSphere(0.5)  -- 实际半径只有 0.25!

-- ✅ 正确:明确转换为直径
local radius = 0.5
shape:SetSphere(radius * 2)  -- 直径 1.0 = 半径 0.5

-- ✅ 直接用直径思维
shape:SetSphere(1.0)  -- 直径 1.0,半径 0.5

排查要点

来源

相关