向对象添加力(如蹦床)

时间:2015-01-06 20:19:38

标签: c# unity3d

我的物体就像蹦床一样,我有一个物体,当它落在蹦床上时,它应该朝着蹦床所面向的方向射击(上/下/左/右/倾斜等)。 / p>

我尝试了两件事来尝试完成这件事,但两件事都没有效果。这是我的第一次尝试:

void OnCollisionEnter2D(Collision2D other){
    if(other.gameObject.tag == "Player"){
        other.gameObject.rigidbody2D.AddForce(Vector2.up * 2500, ForceMode2D.Impulse);
    }
}

这是我的第二次尝试:

void OnCollisionEnter2D(Collision2D other){
    if(other.gameObject.tag == "Player"){
        other.gameObject.rigidbody2D.AddForce(gameObject.transform.rotation.eulerAngles * 2500, ForceMode2D.Impulse);
    }
}

我可以用什么来获得我想要的效果?

修改

如果有帮助的话,这是完整的方法:

void OnCollisionEnter2D(Collision2D other){
    if(other.gameObject.tag == "Player"){
        other.gameObject.rigidbody2D.velocity = Vector2.zero;

        other.gameObject.rigidbody2D.AddForce(transform.forward * forceAmount, ForceMode2D.Impulse);

        gameObject.GetComponent<SpriteRenderer>().color = new Color(Color2.Rand(), Color2.Rand(), Color2.Rand(), 1f);
    }
}

1 个答案:

答案 0 :(得分:2)

如果你想在蹦床的方向上反弹,那么在你的第一次尝试中,而不是

other.gameObject.rigidbody2D.AddForce(Vector2.up * 2500, ForceMode2D.Impulse);

使用

other.gameObject.rigidbody2D.AddForce(transform.forward * 2500, ForceMode2D.Impulse);

如果您想要固定力量,请考虑直接更改rigidbody2D.velocity。