如何在玩家碰撞地面时停止触发动画?
我是一个新的统一用户,我正在尝试制作一个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'没有优先权...
谢谢!
在动画中你的状态机,
只需添加一个空闲状态,这将JUMP状态转移到空闲(这将当玩家站在地面上循环,什么也不做)触发状态,然后从OnTriggerEnter2D
可以使用Animator.setTrigger(“triggerName”)将状态转移到空闲状态。
正如我们在项目的球员应该成为很多条件空闲,所以我们只是在这里trigging backIdel
做出了AnyStat转移到空闲状态的例子:
感谢您的帮助。仍然有一个问题与它...我更新了我的问题,如果你能再次帮助我...谢谢:) – Etienne
嗨,我想你也许带我错了,应该没有必要做另一个* stopJump *状态,从跳跃状态到空闲状态的触发就是你所需要的,在我们的项目中,为了说服我们的目的,我们甚至从**任意状态**到空闲触发了一个触发器,这将允许我们以前的状态转换到空闲状态。 – armnotstrong
谢谢!有用!这是如此简单....> Etienne
更好,如果你问你的问题在https://gamedev.stackexchange.com/ – CodingYoshi