예제 #1
0
파일: Incense.cs 프로젝트: tsi25/Zen
    private void InitializeIncenseNode(IncenseNode node)
    {
        node.transform.SetParent(transform);
        node.transform.position = spawnPos.position;
        node.gameObject.SetActive(true);

        Vector3 driftTarget = new Vector3(
            node.transform.position.x + Random.Range(xDrift.x, xDrift.y),
             node.transform.position.y + Random.Range(yDrift.x, yDrift.y),
             node.transform.position.z + Random.Range(zDrift.x, zDrift.y));
        node.StartCoroutine(node.Travel(driftTime, driftTarget));

        StartCoroutine(RecycleNode(node, fadeTime));
    }
예제 #2
0
    private void InitializeIncenseNode(IncenseNode node)
    {
        node.transform.SetParent(transform);
        node.transform.position = spawnPos.position;
        node.gameObject.SetActive(true);

        Vector3 driftTarget = new Vector3(
            node.transform.position.x + Random.Range(xDrift.x, xDrift.y),
            node.transform.position.y + Random.Range(yDrift.x, yDrift.y),
            node.transform.position.z + Random.Range(zDrift.x, zDrift.y));

        node.StartCoroutine(node.Travel(driftTime, driftTarget));

        StartCoroutine(RecycleNode(node, fadeTime));
    }
예제 #3
0
파일: Incense.cs 프로젝트: tsi25/Zen
    private IEnumerator RecycleNode(IncenseNode node, float time)
    {
        yield return new WaitForSeconds(time);
        for (int i = 0; i < activeNodes.Count; i++)
        {
            if (activeNodes[i].GetInstanceID() == node.GetInstanceID())
            {
                activeNodes.RemoveAt(i);
                break;
            }
        }

        inactiveNodes.Add(node);
        node.Stop();
        node.gameObject.SetActive(false);
    }
예제 #4
0
    private IEnumerator RecycleNode(IncenseNode node, float time)
    {
        yield return(new WaitForSeconds(time));

        for (int i = 0; i < activeNodes.Count; i++)
        {
            if (activeNodes[i].GetInstanceID() == node.GetInstanceID())
            {
                activeNodes.RemoveAt(i);
                break;
            }
        }

        inactiveNodes.Add(node);
        node.Stop();
        node.gameObject.SetActive(false);
    }
예제 #5
0
    public IncenseNode GetNode()
    {
        IncenseNode newNode = null;

        if (inactiveNodes.Count > 0)
        {
            newNode = inactiveNodes[0];
            activeNodes.Add(newNode);
            inactiveNodes.RemoveAt(0);
        }
        else
        {
            newNode = Instantiate(nodePrefab, spawnPos.position, Quaternion.identity) as IncenseNode;
            activeNodes.Add(newNode);
        }

        return(newNode);
    }