2017-10-11 100 views
0

我是一个新的统一用户,我正在尝试制作一个2D平台变形器。 我可以控制我的球员,但是我的跳跃有点问题。如何在玩家碰撞地面时停止触发动画?

我在动画制作中使用了触发器,它可以工作,但是我想在玩家触摸地面时停止动画。

最好的办法是保持最后一跳的帧准备,直到玩家接触地面,然后停下来。

我有一个collider2D谁在连接到播放器与此代码gameObjet:

void Start() 
{ 
    Audio = GetComponent<AudioSource>(); 
    Anim = transform.parent.GetComponent<Animator>(); 
} 

void OnTriggerEnter2D (Collider2D col) 
{ 
    if (col.gameObject.tag == "Sol" || col.gameObject.tag == "Plateforme") 
    { 
     Anim.SetTrigger("stopJump"); 
     transform.parent.GetComponent<playerController>().isGrounded = true; 
     Audio.pitch = 0.7f; 
     Audio.volume = 0.7f; 
     Audio.PlayOneShot(soundGround); 
    } 
} 

我的动画有'跳“闲置”和运行之间的过渡“stopJump”。这是正确的做法吗? see my animator here

动画Jump不想在结束帧之前停止。如果我禁用'有退出时间',跳转停止太早... 触发器'stopJump'没有优先权...

谢谢!

+0

更好,如果你问你的问题在https://gamedev.stackexchange.com/ – CodingYoshi

回答

1

在动画中你的状态机,

只需添加一个空闲状态,这将JUMP状态转移到空闲(这将当玩家站在地面上循环,什么也不做)触发状态,然后从OnTriggerEnter2D可以使用Animator.setTrigger(“triggerName”)将状态转移到空闲状态。

正如我们在项目的球员应该成为很多条件空闲,所以我们只是在这里trigging backIdel做出了AnyStat转移到空闲状态的例子:

enter image description here

+0

感谢您的帮助。仍然有一个问题与它...我更新了我的问题,如果你能再次帮助我...谢谢:) – Etienne

+0

嗨,我想你也许带我错了,应该没有必要做另一个* stopJump *状态,从跳跃状态到空闲状态的触发就是你所需要的,在我们的项目中,为了说服我们的目的,我们甚至从**任意状态**到空闲触发了一个触发器,这将允许我们以前的状态转换到空闲状态。 – armnotstrong

+0

谢谢!有用!这是如此简单....>< 感谢您的帮助! – Etienne

相关问题