如何使刚体在 unity2d 中移动?

问题描述

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

enter image description here

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 个刚体