You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何实现对象吸附到可旋转网格的功能

旋转网格下的对象吸附实现方案

原代码仅在世界坐标系下对坐标做取整计算,未匹配网格自身的旋转属性,当网格发生旋转后,世界坐标轴与网格局部坐标轴不重合,就会出现吸附偏移。

正确的实现逻辑是通过坐标空间转换,在网格局部空间完成吸附计算后再转回世界空间,具体实现代码如下:

// 先获取网格基底的Transform组件,此处假设你已经赋值给gridTransform变量
Transform gridTransform = 你的网格基底对象.GetComponent<Transform>();

// 1. 将选中对象的世界坐标转换为网格的局部坐标
Vector3 localPos = gridTransform.InverseTransformPoint(selected.position);

// 2. 在局部坐标系下执行网格吸附计算
float localX = Mathf.Round(localPos.x / gridScale) * gridScale;
float localY = Mathf.Round(localPos.y / gridScale) * gridScale;
Vector3 snappedLocalPos = new Vector3(localX, localY, localPos.z);

// 3. 将吸附后的局部坐标转换回世界坐标
Vector3 finalGridPos = gridTransform.TransformPoint(snappedLocalPos);

上述逻辑同时兼容带缩放的网格场景,无需额外调整适配缩放参数

内容的提问来源于stack exchange,提问作者nullFoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:45:02