C# 如何使刚体在unity2d中移动?

C# 如何使刚体在unity2d中移动?,c#,unity3d,game-physics,C#,Unity3d,Game Physics,我的unity项目中有一个刚体2D,附带了circleCollider。当游戏开始时,用户可以按左右箭头来加速或减速球。但一旦球静止,即使施加了巨大的扭矩,球也不会开始移动。 rigidbody2d值如下所示: 质量1,线性阻力0.1,角阻力0.05,重力比例1 地板的物理材料2D值如下: 摩擦系数0.4,反弹系数0.5 我用这条线来增加扭矩: float torque = Input.GetAxis("Horizontal") * rotationSpeed * Time

我的unity项目中有一个刚体2D,附带了circleCollider。当游戏开始时,用户可以按左右箭头来加速或减速球。但一旦球静止,即使施加了巨大的扭矩,球也不会开始移动。

rigidbody2d值如下所示:
质量1,线性阻力0.1,角阻力0.05,重力比例1

地板的物理材料2D值如下:
摩擦系数0.4,反弹系数0.5

我用这条线来增加扭矩:

float torque = Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime;
ballRigidBody2D.AddTorque(torque);
这里得到的扭矩值约为10000-100000


编辑:刚才我在场景视图中注意到,每当我按下向左或向右箭头时,它会突然旋转一个角度,然后停止。当我松开钥匙时,它开始像陀螺一样快速旋转几秒钟,然后最终停下来。(但在做这些杂耍时,它不会移动一英寸。)

你需要了解的第一件事是,附加扭矩会增加一个旋转力,因为它是一个力,所以你需要它的分量:


float torque = Input.GetAxis("Horizontal");

ballRigidBody.AddTorque (torque  * rotationSpeed * Time.deltaTime);


将AddTorque内的扭矩乘以一倍,使其工作正常

然后在修复更新中添加扭矩,该更新对物理效果更好。还可以尝试在球上添加一种可能会导致一些问题的零摩擦材料


确保在球和地板上有一个碰撞器和两个刚体

地板上有一个碰撞器?我认为问题在于你用一个float参数来增加扭矩,它需要是向量。检查@rustyBucketBay是,地板有边缘碰撞器,沿着黑线。@Rigidbody2D中的rustyBucketBay AddTorque方法需要float作为参数。检查rigidbody.AddForce可以为您工作我的球有碰撞器和刚体,但地板有碰撞器和物理材质,没有刚体。错了吗?球有刚体2D分量。因此,它以浮动为参数。@SouravKannanthaB在没有重力的情况下将刚体添加到地板上,并且我已经编辑了我的答案,如果我将刚体添加到地板上,那么当球与它碰撞时,刚体就会下落:(@SouravKannanthaB冻结其在约束中的位置和旋转,并设置为静态