gpt4 book ai didi

c# - Unity 中的 Mathf.clamp() 函数

转载 作者:行者123 更新时间:2023-11-30 19:23:54 24 4
gpt4 key购买 nike

我的游戏场景中有一个 Cube(Player)。我编写了一个 C# 脚本来限制立方体的移动(使用 Mathf.Clamp()),使其不会离开屏幕。

下面是脚本中的我的FixedUpdate() 方法

private void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");

Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rb.velocity = movement * speed;

rb.position = new Vector3(
Mathf.Clamp (rb.position.x, x_min, x_max),
0.5f,
Mathf.Clamp(rb.position.z, z_min, z_max)
);

}

x_min, x_max, z_min, z_max 的值为-3, 3, -2, 8分别通过unity inspector输入。

问题

脚本运行良好,但我的播放器(立方体)可以在负 X-AXIS 方向上最多移动 -3.1 个单位(如果我一直按向左箭头按钮),在负方向上多移动 0.1 个单位X-AXIS(此行为也适用于其他轴)。当我停止按下按钮时,它显然将 -3.1 夹在 -3 之间。

enter image description here

  • 为什么会这样?为什么它 (Mathf.Clamp()) 首先不将立方体限制为 -3 个单位?
  • 为什么我会得到额外的 0.1 个单位?
  • 为什么这个值只有 0.1 个单位?为什么不多一点或少一点?

最佳答案

您的问题可能是因为您正在设置速度然后设置位置,但在下一帧统一之前将速度添加到您的对象位置。这就是它最终减价 0.1 个单位的原因。

要解决此问题,请尝试在对象即将离开边界时将其速度重置为零。

关于c# - Unity 中的 Mathf.clamp() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43738537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com