public void Draw(Vector2 _pos) { if (vl == null) { return; } pos = _pos; controller.ResizeLine(vl, point1 + pos, point2 + pos); }
// 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)); }