【问题标题】:Gradually Increasing Movement Speed Using Normalized Speed使用归一化速度逐渐提高移动速度
【发布时间】:2017-08-29 07:19:41
【问题描述】:

正如标题所说,我希望使用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);

【问题讨论】:

  • 尝试rigidBody.position = transform.position + moveDirection.normalized * moveSpeed * Time.deltaTime;
  • @CổChíTâm 感谢您的回复,在这种情况下更改不会影响任何事情。

标签: c# unity3d


【解决方案1】:

而不是标准化或缩放:钳位。

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);

【讨论】:

    【解决方案2】:

    这个问题可能有更好的解决方案,但我就是这样解决的。我将暂时保留回答这个问题的能力,看看是否有其他人有更好的解决方案。

        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)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 2018-11-06
      相关资源
      最近更新 更多