繁体   English   中英

AddForce在Unity中不起作用

[英]AddForce doesn't work in Unity

我有以下脚本

public class SpeedUp : MonoBehaviour {

    public Rigidbody2D ball;

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

    }

}

每次我运行游戏时,Debug.Log(“ ABC”)都会在控制台中打印ABC,但Rigidbody不会移动,而是保持不变。 有人可以向我解释原因,因为我不理解控制台打印为什么起作用而刚性体不能移动的原因

这是球的代码

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;
    }
}

刚体不动可能是需要getComponenrt()

因此,在脚本中添加void Start()方法

公共类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");
    }

}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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