问题描述
我的 unity 项目中有一个带有 circleCollider 的刚体 2d。游戏开始时,用户可以按左右箭头来加速或减速球。但是一旦球静止,即使施加了巨大的扭矩,球也不会开始移动。
rigidbody2d 值如下:
质量 1,线性阻力 0.1,角阻力 0.05,重力比例 1
floor的物理material2d值如下:
摩擦 0.4,弹性 0.5
我用这条线来增加扭矩:
float torque = Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime;
ballRigidBody2D.AddTorque(torque);
这里的扭矩值大约是 10000 - 100000
编辑:刚才我在场景视图中注意到,每当我按向左或向右箭头时,它会突然旋转一个角度然后停止。但是,当我松开钥匙时,它开始像陀螺一样快速旋转几秒钟,然后最终停止。 (但在做所有这些马戏时它不会移动一英寸。)
解决方法
您首先需要了解的是 AddTorque 添加了一个旋转力,并且由于它是一个力,因此您需要它的组成部分:
float torque = Input.GetAxis("Horizontal");
ballRigidBody.AddTorque (torque * rotationSpeed * Time.deltaTime);
在 AddTorque 中乘以扭矩以使其正常工作。
然后在固定更新中添加您的扭矩,以更好地处理物理问题。还尝试在球上添加一种零摩擦材料,这可能会导致一些问题。
确保球和地板上有一个碰撞器和 2 个刚体