【发布时间】:2014-10-01 15:47:27
【问题描述】:
对 mono development 和 Unity 3d 非常陌生,并且似乎在使用此代码时遇到了问题。首先,代码正在运行。它做了它应该做的事情,但是,它也做了一些它不应该做的时髦的事情。你可以向上、向下、向左和向右看,也可以沿着这些方向走,但糟糕的是,出于某种原因,我的角色喜欢在静止不动时轻推鼠标的方向。我错过了什么?这样做的效率更高/错误更少?
public class PlayerControl : MonoBehaviour {
public float WALK_SPEED = 1.3f;
public float RUN_SPEED = 4.0f;
public float STRAFE_SPEED = 5.0f;
public float ROTATION_SPEED = 300.0f;
public float JUMP_FORCE = 250.0f;
void Start()
{
}
// Update is called once per frame
void Update ()
{
float movementSpeed = WALK_SPEED;
float strafeSpeed = STRAFE_SPEED;
float rotationSpeedx = ROTATION_SPEED;
float rotationSpeedy = ROTATION_SPEED;
if (Input.GetKey(KeyCode.LeftShift))
{
movementSpeed = RUN_SPEED;
}
movementSpeed = Input.GetAxis("Vertical") * movementSpeed * Time.deltaTime;
strafeSpeed = Input.GetAxis("Horizontal") * strafeSpeed * Time.deltaTime;
rotationSpeedx = Input.GetAxis("Mouse X") * rotationSpeedx * Time.deltaTime;
rotationSpeedy = Input.GetAxis("Mouse Y") * rotationSpeedy * Time.deltaTime;
Vector3 rotate = new Vector3 (-rotationSpeedy, rotationSpeedx, 0);
transform.Translate(Vector3.forward * movementSpeed);
transform.Translate(Vector3.right * strafeSpeed);
transform.Rotate(rotate);
if (Input.GetKeyDown(KeyCode.Space) &&
transform.position.y < 30)
{
rigidbody.AddForce(Vector3.up * JUMP_FORCE);
}
}
}
【问题讨论】:
-
你能澄清一下这是什么意思吗? "微调鼠标的方向"
-
@SirBraneDamuj 就像角色在没有按任何键或做任何动作的情况下缓慢地向鼠标方向移动一样。当它们应该完全静止时,它们正在轻微移动。我知道它与
Mouse Y部分有关,因为如果您删除它并用transform.Rotate(Vector3.up * rotationSpeedx)替换rotate代码,它会完美运行,您就是无法向上或向下看。 -
在您使用浮点数时需要考虑死区,我看不到您考虑到它的任何地方
-
@ZoomVirus 你能详细说明一下吗?总的来说,我对游戏开发很陌生。
-
好吧,现在这更有意义了 :) 我会采纳 ZoomVirus 的建议并查看您的输入配置。尝试弄乱鼠标输入轴的值,看看是否可以这样解决。
标签: c# unity3d mono monodevelop