【问题标题】:Returning game object on start position在开始位置返回游戏对象
【发布时间】:2017-12-06 16:07:25
【问题描述】:

嗨,大家好, 我在 Unity (C#) 中工作,但遇到了问题。我有一个名为 littleOne 的立方体,它从起始位置落下,另一个立方体破坏了第一个立方体 OnTriggerEnter。当第一个立方体与“毁灭者”立方体碰撞时,我想把它带回起始位置。所有游戏对象都正确附加到脚本。这是我的解决方案:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DestroyObject : MonoBehaviour
{
    public GameObject littleOne;

    public Vector3 startPoint;

    void Start()
    {
        startPoint = littleOne.transform.position;
    }

    // Update is called once per frame
    void Update()
    {
    }


    private void OnTriggerEnter(Collider other)
    {   
        if(other.gameObject.name == "littleOne") {
            other.gameObject.transform.position = startPoint; //*not working
            //littleOne.transform.position = startPoint; //*not Working
        }
    }
}

有符号 * 的行什么都不做,这些行我有问题。我正在寻找解决方案,我尝试过这种方式,但没有任何反应。

编辑:问题已解决:我已经解决了问题。这段代码我已经移到了一个带有下降操作的脚本中。这是一个对象的多个相关脚本中的问题。感谢您的建议!

【问题讨论】:

  • 可能只是复制/粘贴错误,但您缺少“;”在第一条不工作行的末尾
  • 另外,如果你在移动它后立即销毁它,你怎么知道它不起作用?
  • 投票关闭,因为这只是一个错字
  • “;”没有问题。破坏线应该是评论。我编辑了它。
  • 关于“为什么我的碰撞没有被检测到”/“为什么OnCollisionEnter/OnTriggerEnter没有被调用”等等类似的问题有成千上万个......你有没有简单的@ 987654324@ 在您的 OnTriggerEnter 函数中以确保调用该函数?

标签: c# unity3d


【解决方案1】:

Other object 和 littleOne 指的是您要销毁的同一个对象:

不要破坏它:

private void OnTriggerEnter(Collider other)
{   
    if(other.gameObject.name == "littleOne") 
    {
        littleOne.transform.position = startPoint; 
    }
}

【讨论】:

  • 你必须用我朋友的一些证据来为“不工作”辩护。对象的行为是什么?
  • 它只是通过。
  • 它会回到起始位置吗?您是否通过禁用重力或其他方式阻止它下落? littleOne 真的叫 littleOne 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多