예제 #1
0
    public void Draw(Vector2 _pos)
    {
        if (vl == null)
        {
            return;
        }

        pos = _pos;
        controller.ResizeLine(vl, point1 + pos, point2 + pos);
    }
예제 #2
0
    // Update is called once per frame
    void LateUpdate()
    {
        if (die)
        {
            VectorLine.Destroy(ref vl[0]);
            VectorLine.Destroy(ref vl[1]);
            Destroy(this.gameObject);

            return;
        }

        UpdateMask(col[0], p1, ref p1Mask);
        UpdateMask(col[1], p2, ref p2Mask);

        // When it's idle
        if (speed == 0.0f)
        {
            if (p1Mask == Vector2.zero && p2Mask == Vector2.zero)
            {
                print("ERROR! A spike is not properly embedded into a wall!");
            }

            // Start falling.
            if (speedAdd != 0.0f)
            {
                if (colSquare.ColManager.IsCol(colSquare, TwoCol.ColType.T1_DEF))
                {
                    speed += Time.deltaTime * speedAdd;
                    return;
                }
            }
        }
        else
        // When it's falling
        {
            UpdateMask(col[0], p1, ref p1Mask);
            UpdateMask(col[1], p2, ref p2Mask);

            // Check if the spike is completely unmasked.
            if (!freefall &&
                p1Mask == Vector2.zero &&
                p2Mask == Vector2.zero)
            {
                freefall = true;
            }
            // If so, then the next time it hits the ground, destroy it!
            else if (freefall &&
                     (
                         p1Mask != Vector2.zero ||
                         p2Mask != Vector2.zero
                     )
                     )
            {
                die = true;
                return;
            }


            myTransform.position += Vector3.down * speed;
            speed += Time.deltaTime * speedAdd;
        }

        // REDRAW!
        controller.ResizeLine(vl [0],
                              myTransform.position + (Vector3)p,
                              myTransform.position + (Vector3)(p1 + p1Mask));

        controller.ResizeLine(vl [1],
                              myTransform.position + (Vector3)p,
                              myTransform.position + (Vector3)(p2 + p2Mask));
    }