ray*_*yan 2 c# unity-game-engine clamp
我的游戏场景中有一个多维数据集(播放器)。我已经编写了一个C#脚本来约束Mathf.Clamp()Cube 的移动(使用),因此它不会离开屏幕。
下面是我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)
);
}
Run Code Online (Sandbox Code Playgroud)
的值x_min,x_max,z_min,z_max是-3,3,-2,8分别经由统一检查员输入。
问题
脚本运行良好,但我的播放器(多维数据集)可以负向最多移动-3.1个单位X-AXIS(如果我一直按住左箭头按钮),负向可以最多移动0.1个单位X-AXIS(此行为也适用于其他轴)。当我停止按下按钮时,它显然会夹紧-3.1到-3。
Mathf.Clamp()首先将多维数据集限制为-3个单位?可能是由于您先设置速度然后设置位置,但在下一帧统一将速度添加到对象位置之前引起的。这就是为什么它最终减少0.1个单位的原因。
要解决此问题,请尝试将要离开边界的对象的速度重置为零。
| 归档时间: |
|
| 查看次数: |
2944 次 |
| 最近记录: |