C# 在世界空间中移动,同时查看鼠标位置

C# 在世界空间中移动,同时查看鼠标位置,c#,unity3d,C#,Unity3d,我试图移动球员使用WASD键,而它总是在看鼠标的位置。 我的问题是W键总是将玩家移动到鼠标位置,而我希望它使用世界空间继续移动。 这是移动播放器的代码 private void FixedUpdate() { MovementHandler(); RotationHandler(); } void MovementHandler() { float hInput=Input.GetAxisRaw(“水平”); float-vInput=Input.GetAxisRaw(“垂直”); 浮动速度=

我试图移动球员使用WASD键,而它总是在看鼠标的位置。 我的问题是W键总是将玩家移动到鼠标位置,而我希望它使用世界空间继续移动。 这是移动播放器的代码

private void FixedUpdate()
{ 
MovementHandler();
RotationHandler();
}
void MovementHandler()
{
float hInput=Input.GetAxisRaw(“水平”);
float-vInput=Input.GetAxisRaw(“垂直”);
浮动速度=输入。GetButton(“运行”)?运行速度:walkSpeed;
Vector3 hmovation=characterController.isground==true?transform.forward*vInput:Vector3.zero;
Vector3 vMovement=characterController.isground==true?transform.right*hInput:Vector3.zero;
characterController.SimpleMove(矢量3.ClampMagnitude(H移动+V移动,1)*速度);
}
void RotationHandler()
{
Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置);
if(Physics.Raycast(光线,out-Raycast命中,100,地面遮罩))
{
变换。注视(命中点);
}
}

谢谢。

您正在使用对象本地空间和

如果你更希望世界空间轴的运动,我想你应该使用和

var hMovement=characterController.isGrounded?Vector3.forward*vInput:Vector3.zero;
var vMovement=characterController.isground?Vector3.right*hInput:Vector3.zero;

您通常应该使用基于帧的移动和用户交互

只能用于与物理相关的内容(例如刚体运动和力)

private void Update()
{ 
MovementHandler();
RotationHandler();
}

您正在使用对象本地空间和

如果你更希望世界空间轴的运动,我想你应该使用和

var hMovement=characterController.isGrounded?Vector3.forward*vInput:Vector3.zero;
var vMovement=characterController.isground?Vector3.right*hInput:Vector3.zero;

您通常应该使用基于帧的移动和用户交互

只能用于与物理相关的内容(例如刚体运动和力)

private void Update()
{ 
MovementHandler();
RotationHandler();
}

这很管用,但它真的很麻烦,快速移动鼠标或由玩家移动鼠标会让他飞起来,你建议其他解决方案吗?thanks@Ayhem当您使用问题中显示的代码时,是否已经出现了该问题?@Ruzihm nope我认为您误解了API;)它表示
速度单位为/s
。。意思是
速度
应该以单位/秒传递。。。但是OP没有这样做,因为他没有乘以
Time.deltaTime
,所以目前它是一个帧速率相关的运动,每帧
Vector3.forward*vInput
。@Ruzihm你部分正确。我不是要乘,而是要乘。如果这被称为每一帧(应该是什么),那么afaik
x
units/frame
中。deltaTime在
frame/second
中,因此
x/deltaTime
应该在
units/frame*frame/second
=
units/second
中,对吗?这里有点困惑:请告诉我们。这很有效,但它真的很麻烦,快速移动鼠标或由玩家移动鼠标会让他飞起来,你有其他建议吗?thanks@Ayhem当您使用问题中显示的代码时,是否已经出现了该问题?@Ruzihm nope我认为您误解了API;)它表示
速度单位为/s
。。意思是
速度
应该以单位/秒传递。。。但是OP没有这样做,因为他没有乘以
Time.deltaTime
,所以目前它是一个帧速率相关的运动,每帧
Vector3.forward*vInput
。@Ruzihm你部分正确。我不是要乘,而是要乘。如果这被称为每一帧(应该是什么),那么afaik
x
units/frame
中。deltaTime在
frame/second
中,因此
x/deltaTime
应该在
units/frame*frame/second
=
units/second
中,对吗?这里有点困惑:请告诉我们。