【发布时间】:2022-11-14 00:15:55
【问题描述】:
对统一和 C# 非常陌生,但我自己无法解决这个问题。提前致谢。
我正在制作 2D 平台游戏。当我的玩家角色在空中时,我的攻击动画不会触发。我有以下代码来控制跳转,当按下空格时执行跳转命令;按住会跳得更高,松开跳跃会取消向上的速度并允许玩家下落。
//Jump controller
var jumpInput = Input.GetButtonDown("Jump");
var JumpInputReleased = Input.GetButtonUp("Jump");
if(jumpInput && IsGrounded())
JumpExc();
if(JumpInputReleased && body.velocity.y > 0)
{
body.velocity = new Vector2(body.velocity.x,0);
}
private void JumpExc()
{
body.velocity = new Vector2(body.velocity.x,bounce);
}
那我也有这个
//Control Ground Melee Attack
if (Input.GetMouseButtonDown(0) && IsGrounded())
{
Attack();
}
//Control Jumping Melee Attack
if (Input.GetMouseButtonDown(0) && body.velocity.y > 0)
{
JumpAttack();
}
//Execute Ground Melee Attack
void Attack()
{
anim.SetTrigger("Attack");
}
//Execute Jumping Melee Attack
void JumpAttack()
{
anim.SetTrigger("JumpAttack");
}
地面攻击完美无缺。跳跃效果很好。当我跳和攻击,角色“等待”空间被释放,在跳跃的顶点攻击,然后摔倒。我基本上希望 Unity 做到:“无论如何,按命令出击”。
在我的 Animator 中,每当触发 Attack() 时,我都会从 Any State 过渡到 Attack。跳跃动画分为上升和下降(如果 y 速度为正,上升为真;当 y 速度为负时,下降为真)。当 JumpAttack 被触发时,我也有从 Jump 到 Jump Attack 的过渡,但它不会这样做——它总是在执行攻击之前等待空间被释放。
我认为问题在于 Unity 变得混乱,因为我正在按住空间——它希望我在触发攻击之前释放空间。但我不知道还有什么方法可以拥有可变的跳跃高度并进行跳跃攻击。
【问题讨论】:
标签: unity3d game-engine