예제 #1
0
파일: Qix.cs 프로젝트: positronicarts/qix
    // Update is called once per frame
    void Update()
    {
        timeSinceLastChange += Time.deltaTime;

        if (timeSinceLastChange > changeTime)
        {
            timeSinceLastChange -= changeTime;
            movement             = GetRandomUnitVector(ref angle, maxAngle);
        }

        Vector3 newPos = (position + (movement * speed * Time.deltaTime));

        int checker = 0;

        while (!PlayerMovement.ValidToMoveTo(newPos) && (++checker < 500))
        {
            movement = GetRandomUnitVector(out angle);
            newPos   = (position + (movement * speed * Time.deltaTime));
        }

        if (checker == 500)
        {
            MWRDebug.Log("QixError1!!!", MWRDebug.DebugLevels.INFLOOP1);
        }

        Line           moveLine = new Line(position, newPos);
        PlayerMovement pm       = GameObject.Find("Player").GetComponent <PlayerMovement>();

        if (pm.DrawingLineIntersects(moveLine))
        {
            pm.Dead();
        }

        position = newPos;

        norm = DynamicLines.GetNormal(ref movement).normalized;

        start = position + norm * len;
        end   = position - norm * len;

        Line currentVec = new Line(start, end);

        pm.KillIfDrawingLineIntersects(currentVec);

        timeSinceLastEnque += Time.deltaTime;

        if (timeSinceLastEnque > enquePeriod)
        {
            timeSinceLastEnque -= enquePeriod;
            lineQueue.Enqueue(currentVec);

            while (lineQueue.Count > maxQueueLength)
            {
                lineQueue.Dequeue();
            }
        }

        GetComponent <MeshFilter>().mesh = DynamicLines.GetMesh(lineQueue.ToArray(), 0.01f);
    }
예제 #2
0
    // Update is called once per frame
    void Update()
    {
        PlayerMovement mov = GameObject.Find("Player").GetComponent <PlayerMovement>();

        var lines = mov.GetDrawingLinesInclLive().ToArray();

        GetComponent <MeshFilter>().mesh = DynamicLines.GetMesh(lines, 0.02f);
    }