简体   繁体   中英

AddForce doesn't work in Unity

I have the following script

public class SpeedUp : MonoBehaviour {

    public Rigidbody2D ball;

    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.tag == "Ball") {
            ball.AddForce(Vector2.left * 1000f);
            Debug.Log("ABC");
        }

    }

}

and every time I run my game, the Debug.Log("ABC") prints ABC in the console, but the Rigidbody doesn't move, it stays as it is. Can someone explain me why, because I don't understand why does the console print work and the Rigidbody doesn't move

This is the code for the Ball

public class Ball : MonoBehaviour {

    public Rigidbody2D rb;
    public Rigidbody2D hook;
    public float releaseTime = 0.15f;

    private bool isPressed = false;

    void Update()
    {
        if (isPressed)
        {

            Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

            if (Vector3.Distance(mousePos, hook.position) > 2.5f)
            {
                rb.position = hook.position + (mousePos - hook.position).normalized * 2.5f;
            }
            else
            {
                rb.position = mousePos;
            }
        }
    }

    void OnMouseDown()
    {
        isPressed = true;
        rb.isKinematic = true;
    }

    void OnMouseUp()
    {
        isPressed = false;
        rb.isKinematic = false;
        StartCoroutine(Release());
    }

    IEnumerator Release()
    {
        yield return new WaitForSeconds(releaseTime);
        GetComponent<SpringJoint2D>().enabled = false;
        this.enabled = false;
    }
}

The Rigidbody doesn't move may be it's need to getComponenrt()

So, add void Start() method in your the script

public class SpeedUp : MonoBehaviour {

public Rigidbody2D ball;

void Start()
{
   ball = ball.GetComponent<Rigidbody2D>();
}

void OnTriggerEnter2D(Collider2D col)
{
    if (col.tag == "Ball") {
        ball.AddForce(Vector2.left * 1000f);
        Debug.Log("ABC");
    }

}

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM