Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么玩家在进入碰撞区域时要花很多时间减速和停车?_C#_Unity3d - Fatal编程技术网

C# 为什么玩家在进入碰撞区域时要花很多时间减速和停车?

C# 为什么玩家在进入碰撞区域时要花很多时间减速和停车?,c#,unity3d,C#,Unity3d,玩家首先退出碰撞区域,减速并停止,然后在5秒钟后,玩家开始在碰撞区域内移动和旋转 现在我想当球员回到碰撞区域,然后开始减速,让球员再次停止 从技术上讲,这是可行的,问题是当球员进入碰撞区域时,他会继续移动,而不是在进入碰撞区域时开始减速。在开始减速之前,他总是动得太多 在这一部分,t的值约为2: if (slowDownBack == false) { t -= 1f * Time.deltaTime;

玩家首先退出碰撞区域,减速并停止,然后在5秒钟后,玩家开始在碰撞区域内移动和旋转

现在我想当球员回到碰撞区域,然后开始减速,让球员再次停止

从技术上讲,这是可行的,问题是当球员进入碰撞区域时,他会继续移动,而不是在进入碰撞区域时开始减速。在开始减速之前,他总是动得太多

在这一部分,t的值约为2:

if (slowDownBack == false)
                {
                    t -= 1f * Time.deltaTime;
                    playerAnimator.SetFloat("Forward", Mathf.Lerp(min, max, t));
                }

我认为问题出在第188行:t-=1.2f*Time.deltaTime;如果它被设置为t-=1f,那么它将变为零,但如果它是1.2f,那么它将需要更长的时间才能变为零,也许原因是它不够精确?但是如果我把它设为2f,那么它会很快变为零。所以我试着把它设为1.2f,但现在又花了太多时间。也许我不应该用Lerp来减速?你试过1.5f吗?还是介于1.2f和2f之间的东西?
if (slowDownBack == false)
                {
                    t -= 1f * Time.deltaTime;
                    playerAnimator.SetFloat("Forward", Mathf.Lerp(min, max, t));
                }
if (slowDownBack == false)
                    {
                        t -= 1f * Time.deltaTime;
                        playerAnimator.SetFloat("Forward", Mathf.Lerp(min, max, t));
                    }