正如标题所述,我希望使用xbox控制器的左手大拇指和Input.GetAxis()方法来逐步提高运动速度。问题是,我需要规范化运动矢量,以阻止斜线运动比向前、向后更快,等等。动作。正常化将自动使大小1,所以我失去了控制速度的能力与我的左手拇指的位置。提前谢谢!
用拇指棒的位置可以控制速度量,但对角线运动比其他动作快。
Vector3 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
rigidBody.MovePosition(transform.position + moveDirection * moveSpeed * Time.deltaTime);不能用大拇指杆的位置来控制速度量,但是对角线运动和其他动作的速度是一样的。
Vector3 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
rigidBody.MovePosition(transform.position + moveDirection.normalized * moveSpeed * Time.deltaTime);发布于 2017-04-17 18:59:08
而不是标准化或缩放:夹子。
Vector3 input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
Vector3 moveDirection = new Vector3(
Mathf.Clamp(input.x, -Mathf.Abs(input.normalized.x), Mathf.Abs(input.normalized.x)),
0,
Mathf.Clamp(input.z, -Mathf.Abs(input.normalized.z), Mathf.Abs(input.normalized.z))
);
rigidBody.MovePosition(transform.position + moveDirection * moveSpeed * Time.deltaTime);单元圆内的所有值将保持不变,而单位圆外的值将重新计算为单位圆上的值。
也可以将其写成:
Vector3 move = (input.magnitude<1?input:input.normalized);发布于 2017-04-04 08:31:40
这个问题也许有更好的解决办法,但我就是这样解决的。我将暂时保留回答这个问题的能力,看看是否还有其他人有更好的解决办法。
Vector3 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
rigidBody.MovePosition(transform.position + new Vector3(moveDirection.normalized.x * moveSpeed * Time.deltaTime * Mathf.Abs(moveDirection.x), 0,
moveDirection.normalized.z * moveSpeed * Time.deltaTime * Mathf.Abs(moveDirection.z)));https://stackoverflow.com/questions/43201328
复制相似问题