Unity 2D Bounce Back移动对象与另一个对象

时间:2015-12-07 18:26:50

标签: unity3d collision

我有一个对象,在收到相应的输入后,它会以这种方式移动:

mov = new Vector3((Input.GetAxis("Horizontal") * vel), 0, 0);
transform.position += mov;

但是,一旦它与一个物体发生碰撞,我希望它能够反弹回来。

我已经完成了程序(OnCollisionEnter2D(Collsion2D col){bla bla...}),但是我需要帮助解决碰撞中发生的事情(弹回对象)....

我试过给碰撞的物体一个弹跳材料,但它只是减慢了一点,我的猜测是因为加速度给出的恒定力。

问候。

3 个答案:

答案 0 :(得分:1)

如果你用transform.position移动对象,你所做的基本上是一个“传送”,所以它会忽略弹跳材料。如果你想让它弹跳,你必须编写物理代码来检测碰撞并改变运动,或者你可以做addforce来移动物体,它会检测碰撞并自动反应。

答案 1 :(得分:0)

您正在传送目标时的物体。相反,你应该使用Rigidbody.addForce这将在指定的方向上添加一个力,因此如果你做相反的方向将"反弹"对象。另一个选择是创建一个物理材料,然后不用代码。

答案 2 :(得分:0)

你没有使用材料,对吧?

看看这篇文章的内容是否可以帮到你,OP正在使用Raycast的公式,答案指导他使用带有Layers Maks的Raycast:

2D bouncing formula doesn't work properly

还有一个也有固定角度(如 Pong ),但它使用的是材质(值为:摩擦:0, bounciness :1): https://gamedev.stackexchange.com/questions/70294/get-gameobject-to-bounce-of-colliders

但是,如果没有任何意义,你会发疯并且可能想从零开始,那么有关于在2D中弹跳和滑动的官方视频教程: https://unity3d.com/learn/tutorials/modules/beginner/2d/sliding-bouncing-2d