团结,通过摩擦+旋转来移动物体

时间:2018-08-03 14:23:10

标签: c# unity3d game-physics

我正拼命寻找到这个问题的解决方案,但尚未找到任何可能,也许您可​​以帮帮我: 我正在做一个简单的测试,其中一种圆柱体可以自转并通过摩擦在平坦平台上移动。我有刚体,已经附加了网格对撞机和控制旋转的脚本。它可以快慢移动,取决于其转速。 脚本如下:

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);
}
}

问题是,当我运行“播放”模式时,此圆柱体会自转,但保持在同一位置! (实际上,它来回移动的幅度很小),我真的不知道是什么原因,我试图增加摩擦参数,添加物理材料,甚至向下施加第二个力(如重力),但没有用。 有人可以为此提供解决方案吗?非常感谢你们!

enter image description here

1 个答案:

答案 0 :(得分:4)

Rotate只是变换椭圆坐标而没有任何力,请使用AddTorque进行物理运动。

例如,

GetComponent<Rigidbody>().AddTorque(new Vector3(1, 0, 0) * rollingSpeed * Time.deltatime);

了解更多,Unity Doc

添加有关Unity上基本物理的技巧。

请记住,当您使用Transform时,这表示 NO 物理。您只是在更改其位置和旋转。

要从事物理学工作,始终是Rigidbody