我的物体就像蹦床一样,我有一个物体,当它落在蹦床上时,它应该朝着蹦床所面向的方向射击(上/下/左/右/倾斜等)。 / 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);
}
}
答案 0 :(得分:2)
如果你想在蹦床的方向上反弹,那么在你的第一次尝试中,而不是
other.gameObject.rigidbody2D.AddForce(Vector2.up * 2500, ForceMode2D.Impulse);
使用
other.gameObject.rigidbody2D.AddForce(transform.forward * 2500, ForceMode2D.Impulse);
如果您想要固定力量,请考虑直接更改rigidbody2D.velocity。