Ejemplo n.º 1
0
    public void ApplyForce()
    {
        Vector2 force    = Utillites.SpringForce(bodyA.position, bodyB.position, restLength, k);
        float   modifier = (bodyA.type == Body.eType.Static || bodyB.type == Body.eType.Static) ? 1.0f : 0.5f;

        bodyA.AddForce(-force * modifier);
        bodyB.AddForce(force * modifier);
        bodyA.AddForce(-force);
        bodyB.AddForce(force);
    }
Ejemplo n.º 2
0
    void Update()
    {
        Body body = Utillites.GetBodyFromPosition(Input.mousePosition);

        if (body != null || selectedBody != null)
        {
            if (selectedBody)
            {
                body = selectedBody;
            }

            spriteRenderer.enabled = true;
            transform.position     = body.position;
            transform.rotation     = Quaternion.AngleAxis(Time.time * 90, Vector3.forward);
            transform.localScale   = Vector2.one * body.shape.size * 1.2f;
        }
        else
        {
            spriteRenderer.enabled = false;
        }

        if (selectedBody)
        {
            if (selectedBody.type == Body.eType.Static)
            {
                Vector2 position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                selectedBody.position = position;
            }
            if (selectedBody.type == Body.eType.Kinematic || selectedBody.type == Body.eType.Dynamic)
            {
                Vector2 position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                Vector2 force    = Utillites.SpringForce(position, selectedBody.position, 0, 5);

                selectedBody.AddForce(force, Body.eForceMode.Velocity);
            }
        }
    }