C# 给物体加力(如蹦床)

C# 给物体加力(如蹦床),c#,unity3d,C#,Unity3d,我有一个类似蹦床的物体,我有一个物体,当它落在蹦床上时,它应该朝着蹦床所面对的方向射击(上/下/左/右/斜等) 我尝试了两件事来实现这一目标,但两件事都不起作用。这是我的第一次尝试: void OnCollisionEnter2D(Collision2D other){ if(other.gameObject.tag == "Player"){ other.gameObject.rigidbody2D.AddForce(Vector2.up * 2500, ForceMo

我有一个类似蹦床的物体,我有一个物体,当它落在蹦床上时,它应该朝着蹦床所面对的方向射击(上/下/左/右/斜等)

我尝试了两件事来实现这一目标,但两件事都不起作用。这是我的第一次尝试:

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);
    }
}
无效OnCollisionInter2D(碰撞2D其他){
如果(other.gameObject.tag==“玩家”){
other.gameObject.rigidbody2D.velocity=Vector2.0;
other.gameObject.rigidbody2D.AddForce(transform.forward*forceAmount,ForceMode2D.Pulse);
gameObject.GetComponent().color=新颜色(Color2.Rand(),Color2.Rand(),Color2.Rand(),1f);
}
}

如果你想在蹦床面对的方向上弹跳,在你第一次尝试时,而不是

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


如果你想要固定力,直接考虑改变刚体2D速度。

你的两次尝试有什么用?此外,如果蹦床水平(180º)撞击,并不意味着你将以90º的角度向上射击,因为这取决于物体撞击蹦床的角度-不确定你提供的代码中是否有这样的说明,但只是想给出一个提示:)尝试1将所有东西都垂直射击,尝试2物体在蹦床上滚动弹跳速度需要依赖于碰撞速度吗?比如,如果物体在10点击中它,它应该在10点反弹吗?或者它是一个固定的弹跳速度?它是一个固定的弹跳,它可以以任何角度进入,并且应该以固定的方向发射Transform.forward不起作用,它与我的第二次尝试具有相同的效果。你的蹦床的前进方向(蓝色轴)是你想要的方向吗?模型是否以奇怪的方向旋转?
other.gameObject.rigidbody2D.AddForce(transform.forward * 2500, ForceMode2D.Impulse);