即使禁用了游戏对象,也可以让脚本修改变换位置

时间:2019-07-16 21:29:14

标签: c# unity3d

我正在尝试使用主摄像机位置进行显示和消失。例如,如果camera.main.transform.position = (0,2,0);使对象出现,否则使其消失。

在这种情况下,对象是基本的Cube。我开始使用setActive函数,但事实证明,一旦对特定对象的setActive函数运行了false, Update,就无法运行。我已经添加了我正在使用的脚本:

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

public class backandforth : MonoBehaviour
{

    public float speed = 2.5f;
    GameObject targetObject;

    // Use this for initialization
    void Start()
    {
        targetObject = GameObject.Find("Cube");
        targetObject.SetActive(false);
    }

    // Update is called once per frame
    void Update()
    {
        //move the cube from (0,0,0)
        if (Camera.main.transform.position== new Vector3(0, 2, 0)) { 
            transform.position = new Vector3(Mathf.PingPong(Time.time * speed, 5), transform.position.y, transform.position.z);
            transform.Rotate(0, 0, 5);
        }
        else
        {
            targetObject.SetActive(true);
            transform.position = new Vector3(Mathf.PingPong(Time.time * speed, 5), transform.position.y, transform.position.z);
            transform.Rotate(0, 0, 100);
            //gameObject.SetActive(false);
        }

    }
}

这是设置的层次结构视图,用于使GameObject定义清晰可见。 enter image description here

关于如何执行此操作的任何建议?谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则更新方法应如下:

void Update()
{
    if (Camera.main.transform.position== new Vector3(0, 2, 0)) {
        //if the camera.main.transform.position = (0,2,0); make the object appear
        targetObject.SetActive(true);
    }
    else
    {
        //otherwise make it disappear
        targetObject.SetActive(false);
    }

}