Exemple #1
0
    void IMovableNode.UpdateMove()
    {
        GameObject startNode = bottomNode;
        GameObject endNode   = topNode;

        Vector2 midpoint = Vector2.Lerp(startNode.transform.position, endNode.transform.position, 0.5f);

        transform.position = midpoint;

        //Rotate
        Quaternion rotation = Quaternion.LookRotation(Vector3.forward, endNode.transform.position - startNode.transform.position);

        transform.rotation    = rotation;
        transform.eulerAngles = new Vector3(0, 0, transform.eulerAngles.z);

        //Scale the wood.
        //scale needed = distance x units per pixel / sprite pixel size
        BoxCollider2D woodCollider    = wood.GetComponent <BoxCollider2D>();
        float         distance        = Vector2.Distance(startNode.transform.position, endNode.transform.position);
        float         spritePixelSize = woodCollider.gameObject.GetComponent <SpriteRenderer>().sprite.bounds.size.y * 100;

        woodCollider.gameObject.transform.localScale = new Vector3(transform.localScale.x, distance * 100 / spritePixelSize, transform.localScale.z);

        //Move the nodes.
        float fTop    = woodCollider.offset.y + (woodCollider.size.y / 2f);
        float fBottom = woodCollider.offset.y - (woodCollider.size.y / 2f);

        bottomNode.transform.position = woodCollider.gameObject.transform.TransformPoint(new Vector3(0f, fBottom, bottomNode.transform.position.z));;
        topNode.transform.position    = woodCollider.gameObject.transform.TransformPoint(new Vector3(0f, fTop, topNode.transform.position.z));

        hingeManager.UpdateHingePositions();
    }
    void IMovableComponent.UpdateMove(float deltaX, float deltaY)
    {
        transform.position = new Vector3(transform.position.x + deltaX, transform.position.y + deltaY, transform.position.z);

        hingeManager.UpdateHingePositions();
    }