我正拼命寻找到这个问题的解决方案,但尚未找到任何可能,也许您可以帮帮我: 我正在做一个简单的测试,其中一种圆柱体可以自转并通过摩擦在平坦平台上移动。我有刚体,已经附加了网格对撞机和控制旋转的脚本。它可以快慢移动,取决于其转速。 脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
public float rollingSpeed;
public float gravity;
// Update is called once per frame
void FixedUpdate()
{
transform.Rotate(rollingSpeed, 0.0f, 0.0f);
GetComponent<Rigidbody>().AddForce(0.0f, -gravity, 0.0f);
}
}
问题是,当我运行“播放”模式时,此圆柱体会自转,但保持在同一位置! (实际上,它来回移动的幅度很小),我真的不知道是什么原因,我试图增加摩擦参数,添加物理材料,甚至向下施加第二个力(如重力),但没有用。 有人可以为此提供解决方案吗?非常感谢你们!
答案 0 :(得分:4)
Rotate
只是变换椭圆坐标而没有任何力,请使用AddTorque
进行物理运动。
例如,
GetComponent<Rigidbody>().AddTorque(new Vector3(1, 0, 0) * rollingSpeed * Time.deltatime);
了解更多,Unity Doc。
添加有关Unity上基本物理的技巧。
请记住,当您使用Transform
时,这表示 NO 物理。您只是在更改其位置和旋转。
要从事物理学工作,始终是Rigidbody
。