首页 > 解决方案 > Unity:如何创建陆地事件 c#

问题描述

每当我的角色降落在地面上时,我都想为它播放挤压动画。我有动画和地面检查。我想设置一个布尔值,当我从空中降落到地面时,它会保持一秒钟。当我在更新中使用调用方法时,它每帧都会改变 bool 的值。有人能帮我吗。代码看起来像这样:

void Update()
{
    if (isGrounded)
    { 
     justLanded = true;
     Invoke("justLandedExit", 3f);
    }
}
void justLandedExit()
{
  justLanded = false;
}

标签: c#unity3d

解决方案


您可以拥有一个名为 wasLanded 的 bool,它可以像这样在固定更新中工作:

void Update()
{
   isGrounded = DetectGround();

   if(isGrounded && !wasGrounded)
   {
      PlayAnimation();
   }
}

void LateUpdate()
{
   wasGrounded = isGrounded;
}

推荐阅读