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

ARkit HitCube示例:UnityARHitTestExample.cs实现物体单次放置后停止更新求助

实现Unity AR物体单次放置后不再移动的方案

嘿,这个需求在AR场景里太常见了,我来给你一步步拆解实现方法,修改UnityARHitTestExample.cs就行:

核心思路

我们只需要给脚本加一个状态开关变量,用来标记物体是否已经完成放置。当开关为false时,正常执行命中检测并更新物体位置;一旦物体被放置(开关设为true),就跳过后续的位置更新逻辑。

具体修改步骤

1. 添加状态控制变量

在脚本的私有变量区域,新增一个布尔变量,用来记录物体是否已放置:

// 标记物体是否已经完成放置,初始为未放置状态
private bool isObjectPlaced = false;

2. 阻断后续位置更新逻辑

找到脚本中处理AR命中检测并更新物体位置的代码块(通常在Update()方法里,或者专门的HitTest方法中)。在执行位置更新前,先判断状态开关:

假设原代码是这样的:

// 原命中检测更新逻辑
List<ARHitTestResult> hitTestResults = new List<ARHitTestResult>();
UnityARSessionNativeInterface.GetARSessionNativeInterface().HitTest(
    screenPosition, 
    ARHitTestResultType.ARHitTestResultTypeExistingPlaneUsingExtent, 
    hitTestResults);

if (hitTestResults.Count > 0)
{
    var hitPose = hitTestResults[0].pose;
    placedObject.transform.SetPositionAndRotation(hitPose.position, hitPose.rotation);
}

修改后变成:

List<ARHitTestResult> hitTestResults = new List<ARHitTestResult>();
UnityARSessionNativeInterface.GetARSessionNativeInterface().HitTest(
    screenPosition, 
    ARHitTestResultType.ARHitTestResultTypeExistingPlaneUsingExtent, 
    hitTestResults);

// 只有未放置物体时,才更新位置
if (!isObjectPlaced && hitTestResults.Count > 0)
{
    var hitPose = hitTestResults[0].pose;
    placedObject.transform.SetPositionAndRotation(hitPose.position, hitPose.rotation);
}

3. 触发放置完成的逻辑

接下来需要设置一个触发时机(比如用户点击屏幕),把状态开关设为true,锁定物体位置。找到脚本中处理用户输入的部分(比如触摸点击),添加如下逻辑:

if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
    // 只有未放置时才执行锁定操作
    if (!isObjectPlaced)
    {
        isObjectPlaced = true;
        // 可选:添加放置完成的反馈,比如播放音效、显示提示文本
        Debug.Log("物体已放置,位置锁定!");
    }
}

如果原脚本已经有点击触发放置的逻辑,直接在那个逻辑块里加上isObjectPlaced = true;就行。

额外扩展(可选)

如果后续需要支持重新放置功能,只需要加一个UI按钮,点击时把isObjectPlaced重置为false即可:

public void ResetPlacement()
{
    isObjectPlaced = false;
    Debug.Log("已重置放置状态,可重新移动物体");
}

这样修改后,物体第一次通过命中检测放置好后,后续的AR命中检测就不会再改变它的位置了,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:32:58