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

Unity中Transform未按预期工作:无法设置主相机位置

问题分析与解决

核心问题:方法命名冲突

你定义的Reset()是Unity的内置编辑器方法,只有在编辑器中右键组件选择「Reset」时才会执行,运行时调用不会触发你的重置逻辑——这是代码不生效的主要原因。

触发条件验证

OnTriggerEnter生效必须满足所有以下条件:

  • 碰撞双方都带有Collider组件,且其中至少一个物体挂载Rigidbody组件(若Cube是静态物体,相机的Rigidbody不能勾选IsKinematic)
  • 触发方(相机或Cube)的Collider必须勾选IsTrigger选项
  • Cube物体的标签确实是Cube,注意大小写和拼写完全一致

修改后的代码示例

把自定义重置方法改名避免冲突,同时可补充y轴设置(按需调整):

using UnityEngine;

public class CollisionDetect : MonoBehaviour
{
    private Vector3 CameraPosition;

    void Start()
    {
        CameraPosition = transform.position;
    }

    // 改名避免与Unity内置方法冲突
    void ResetCameraPosition()
    {
        CameraPosition.x = 520.64f;
        CameraPosition.y = transform.position.y; // 保留原y值,或改为目标数值
        CameraPosition.z = 491.4f;
    }

    private void OnTriggerEnter(Collider other)
    {
        if(other.gameObject.tag == "Cube")
        {
            ResetCameraPosition();
        }
    }

    void Update()
    {
        transform.position = CameraPosition;
    }
}

额外检查项

  • 确认脚本挂载在主相机上,而非其他物体
  • 运行时打开Console窗口,排查是否有空引用、标签不存在等报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:27:10