C# Unity对象在冻结状态下旋转
我正在Unity中制作一个游戏,但对象旋转有一个问题:我冻结了一个坐标,但在我移动对象后它仍然旋转: 在视频中,我移动对象,当我释放所有关键点时,它会旋转,尽管使用了冻结选项 这是我的动作脚本:C# Unity对象在冻结状态下旋转,c#,unity3d,rotation,game-physics,C#,Unity3d,Rotation,Game Physics,我正在Unity中制作一个游戏,但对象旋转有一个问题:我冻结了一个坐标,但在我移动对象后它仍然旋转: 在视频中,我移动对象,当我释放所有关键点时,它会旋转,尽管使用了冻结选项 这是我的动作脚本: public class Movement : MonoBehaviour { public int speed; public int turningForce; private int jumpForce; public int jumpForceMax;
public class Movement : MonoBehaviour
{
public int speed;
public int turningForce;
private int jumpForce;
public int jumpForceMax;
public Rigidbody rb;
bool doJump;
void Start()
{
}
private void Update()
{
if (Input.GetKeyUp("space"))
{
doJump = true;
}
}
void FixedUpdate()
{
if (Input.GetKey("space") && IsOnGround)
{
if (jumpForce < jumpForceMax)
{
jumpForce += 50;
}
}
if (Input.GetKey("w") && IsOnGround)
{
rb.AddRelativeForce(speed * Time.deltaTime, 0, 0);
}
if (Input.GetKey("a"))
{
rb.AddTorque(new Vector3(0, -speed * Time.deltaTime, 0));
}
if (Input.GetKey("d"))
{
rb.AddTorque(new Vector3(0, speed * Time.deltaTime, 0));
}
if (doJump)
{
rb.AddForce(0, jumpForce, 0);
doJump = false;
jumpForce = 0;
}
}
private bool m_IsOnGround;
public bool IsOnGround
{
get
{
if (m_IsOnGround)
{
m_IsOnGround = false;
return true;
}
else
{
return false;
}
}
}
void OnCollisionStay()
{
m_IsOnGround = true;
}
}
公共阶级运动:单一行为
{
公共交通速度;
公共交通力量;
私人部队;
公共int jumpForceMax;
公共刚体;
bool-doJump;
void Start()
{
}
私有void更新()
{
if(Input.GetKeyUp(“空格”))
{
doJump=true;
}
}
void FixedUpdate()
{
if(Input.GetKey(“空格”)和&IsOnGround)
{
if(跳线力<跳线力最大值)
{
跳跃力+=50;
}
}
if(Input.GetKey(“w”)和&IsOnGround)
{
rb.AddRelativeForce(速度*Time.deltaTime,0,0);
}
if(Input.GetKey(“a”))
{
rb.AddTorque(新矢量3(0,-速度*时间增量,0));
}
if(Input.GetKey(“d”))
{
rb.AddTorque(新矢量3(0,速度*时间增量,0));
}
if(doJump)
{
rb.附加力(0,跳跃力,0);
doJump=false;
跳跃力=0;
}
}
私人住宅;
公共场所
{
得到
{
如果(m_IsOnGround)
{
m_IsOnGround=假;
返回true;
}
其他的
{
返回false;
}
}
}
void OnCollisionStay()
{
m_IsOnGround=真;
}
}
如您所见,没有任何transform.position更改,并且启用了“冻结Y”选项
希望有人能帮助我理解发生了什么。我不确定你在哪里冻结了Y旋转,但是
rb.AddTorque(新矢量3(0,-速度*Time.deltaTime,0))代码>
是使用力旋转刚体的函数
如果冻结了旋转,这有什么意义
如果像这样冻结了零部件的旋转,则函数
AddTorque()
将不起作用。这实际上很奇怪,您是对的,尽管旋转被冻结,函数AddTorque()仍能起作用。。。请检查视频,您应该能够看到冻结选项启用。我认为还值得一提的是,我可以看到冻结选项实际工作(不包括移动后的随机旋转)。如果我禁用冻结,对象将立即沿斜坡向下旋转。如果不希望它旋转,请在代码中禁用该功能。当你按住/按“a”或“D”时,它将停止旋转。您的代码只是按照要求执行。请检查此视频:我已禁用我的移动脚本,但正如您所看到的,尽管对象已冻结,但对象仍在旋转。我的问题是:为什么它会旋转?仅仅冻结一个轴并不能阻止刚体旋转。