C# 统一,通过摩擦移动物体+;旋转

C# 统一,通过摩擦移动物体+;旋转,c#,unity3d,game-physics,C#,Unity3d,Game Physics,我正在到处寻找这个问题的解决方案,但还没有找到任何可能性,也许你可以帮我: 我正在做一个简单的测试,在这个测试中,一种圆柱体可以通过摩擦在一个平面平台上旋转和移动。我已经附加了刚体、网格碰撞器和控制旋转的脚本。它可以快速移动也可以缓慢移动,这取决于它的旋转速度。 脚本如下: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController :

我正在到处寻找这个问题的解决方案,但还没有找到任何可能性,也许你可以帮我: 我正在做一个简单的测试,在这个测试中,一种圆柱体可以通过摩擦在一个平面平台上旋转和移动。我已经附加了刚体、网格碰撞器和控制旋转的脚本。它可以快速移动也可以缓慢移动,这取决于它的旋转速度。 脚本如下:

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);
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类玩家控制器:单行为{
公众浮标滚动速度;
公众浮力;
//每帧调用一次更新
void FixedUpdate()
{
旋转(滚动速度,0.0f,0.0f);
GetComponent().AddForce(0.0f,-重力,0.0f);
}
}
问题是,当我运行播放模式时,这个圆柱体会自动旋转,但保持在相同的位置!(事实上,它在非常轻微地来回移动),我真的不知道原因是什么,我试图增加摩擦参数,添加物理材料,甚至向下添加第二个力(如重力),但它不起作用。 任何人都能找到解决办法吗?非常感谢你们


旋转
只是在不施加任何力的情况下变换eular坐标,使用
添加扭矩
进行物理运动

比如说,

GetComponent<Rigidbody>().AddTorque(new Vector3(1, 0, 0) * rollingSpeed * Time.deltatime);
GetComponent().AddTorque(新矢量3(1,0,0)*滚动速度*Time.deltatime);
阅读更多

添加关于统一的基础物理的提示

请记住,当您使用
Transform
时,它的意思是NO物理。你只是在改变它的位置和旋转


要处理物理问题,始终是
刚体

旋转
只是在不施加任何力的情况下变换欧拉坐标,使用
附加扭矩
代替物理运动

比如说,

GetComponent<Rigidbody>().AddTorque(new Vector3(1, 0, 0) * rollingSpeed * Time.deltatime);
GetComponent().AddTorque(新矢量3(1,0,0)*滚动速度*Time.deltatime);
阅读更多

添加关于统一的基础物理的提示

请记住,当您使用
Transform
时,它的意思是NO物理。你只是在改变它的位置和旋转


和物理一起工作,总是
刚体

嗨,Matrix,现在我看到了,我尝试了AddTorque,它工作了:)非常感谢。嗨,Matrix,现在我看到了,我尝试了AddTorque,它工作了:)非常感谢。