Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';不要同时旋转和移动_C#_Unity3d_Game Physics - Fatal编程技术网

C# Can';不要同时旋转和移动

C# Can';不要同时旋转和移动,c#,unity3d,game-physics,C#,Unity3d,Game Physics,我目前正在开发Unity 3D中的FPS射击游戏。我是Unity的新手,我的玩家动作脚本有点问题。就个人而言,一切似乎都正常,我可以自由地旋转和移动播放器,但是当我尝试同时执行这两项操作时,我的播放器似乎会锁定并且不会旋转 有时在地形上跳跃或移动到更高的地面似乎可以解决问题,但是我在重力禁用、没有碰撞器以及玩家离地面很远的情况下进行了一些检查,所以问题似乎出在脚本上。我还做了一些调试,Rotate()代码确实运行了,只是旋转量似乎没有改变 以下是玩家移动脚本: 使用系统集合; 使用System.

我目前正在开发Unity 3D中的FPS射击游戏。我是Unity的新手,我的玩家动作脚本有点问题。就个人而言,一切似乎都正常,我可以自由地旋转和移动播放器,但是当我尝试同时执行这两项操作时,我的播放器似乎会锁定并且不会旋转

有时在地形上跳跃或移动到更高的地面似乎可以解决问题,但是我在重力禁用、没有碰撞器以及玩家离地面很远的情况下进行了一些检查,所以问题似乎出在脚本上。我还做了一些调试,Rotate()代码确实运行了,只是旋转量似乎没有改变

以下是玩家移动脚本:

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
[RequiredComponent(类型)(刚体))]
公共类PlayerMov:单行为
{
[序列化字段]
私人摄像机;
[序列化字段]
私人浮动速度=5f;
[序列化字段]
专用浮点数灵敏度=4f;
[标题(“摄影机视图锁定:”)]
[SerializeField]//上下查找的最小和最大数量(度)
私人浮动低水位=70f;
[序列化字段]
专用浮动高锁=85f;
私人刚体;
私有浮点currentrotx;//稍后用于计算相对旋转
公共矢量3速度;
公共向量3旋转;//将播放器从一侧旋转到另一侧
公共浮动摄像头旋转;//上下旋转摄像头
公共浮点数jmpspe=2000f;
void Start()
{
rb=GetComponent();
}
//每帧调用一次更新
无效更新()
{
CalcMovement();
Calcrotion();
旋转();
}
void FixedUpdate()
{
Move();
}
私人无效CalcRotation()
{
float yrot=Input.GetAxisRaw(“鼠标X”);//围绕X轴
旋转=新矢量3(0f,yrot,0f)*外观灵敏度;
float xrot=Input.GetAxisRaw(“鼠标Y”);//围绕Y轴
凸轮旋转=xrot*外观灵敏度;
}
私有无效计算移动()
{
float xmov=Input.GetAxisRaw(“水平”);
float zmov=Input.GetAxisRaw(“垂直”);
Vector3 movhor=transform.right*xmov;
Vector3 movver=transform.forward*zmov;
速度=(movhor+movver)。标准化*速度;
}
无效移动()
{
//移动
如果(速度!=矢量3.0)
{
rb.移动位置(rb.位置+速度*时间.固定时间);
}
//跳跃
if(Input.GetKeyDown(KeyCode.Space))
{
//稍后添加双跳转限制!
rb.AddForce(0,jmppe*Time.deltaTime,0,ForceMode.pulse);
}
}
void Rotate()
{
//侧视
rb.MoveRotation(rb.rotation*四元数.Euler(rotation));
//上下打量的照相机
currentrotx-=凸轮旋转;
currentrotx=数学钳位(currentrotx,-低锁,高锁);
cam.transform.localEulerAngles=新矢量3(currentrotx,0,0);
}
}
以下是我的播放器附带的相关组件:

(播放器附加了几个组件,但我在没有它们的情况下运行了测试,问题仍然存在)

正如我所说,我是一个unity新手,所以我肯定我错过了一些小东西,但我似乎无法确定,我已经被困在这个问题上有一段时间了,因此非常感谢任何帮助。

解决:

我遇到的问题似乎是因为我是从笔记本电脑上运行场景的,而不是我认为Unity input是为之构建的桌面