当前位置: 首页 > 知识库问答 >
问题:

仅在动画过程中检查碰撞

鄢雅畅
2023-03-14

我有这个骑士角色,有一把剑和一个攻击动画。我想检查剑是否与敌人相撞,然后降低敌人的生命值。我设法做到了这一点,但每次sowrd的对撞机击中敌人的对撞机时,我都有互动。显然我不想那样,但互动应该只在玩家进攻时发生。我尝试了不同的approahces:

  • 通过在字符脚本中执行此操作,使用布尔值检查攻击
if (Input.GetButtonDown("Fire1"))
        {
            GetComponent<Animator>().SetBool("hit1", true);
            isAttacking = true;
        }

这是敌人的剧本

        if (other.gameObject.CompareTag("Sword") && knight.isAttacking)
        {
            Debug.Log("Hit");

            currentHealth -= 10;
            Debug.Log("Enemy healh: " + currentHealth.ToString());

            healthBar.UpdateHealthBar();
        }
  • 使用animator.GetCurrentAnimatorStateInfo(0)检查动画是否正在运行。IsName(“AnimationState的名称”)而不是骑士。isAttacking

到目前为止似乎没有什么工作,我知道我错过了一些愚蠢的东西,当你们告诉我,请让我面对手掌时,我会面对手掌!谢谢。

共有1个答案

谈灵均
2023-03-14

在动画窗口中,打开玩家的攻击动画,大致如下所示

现在,尝试播放垂直白色条,移动它将显示每个关键帧处播放器的动画快照。现在,找到玩家举起剑打击敌人的关键帧。通过单击下图中红色圆圈的按钮添加事件

添加事件后,您将在检查器中看到该函数,当动画到达该关键帧时,该函数由事件调用。

现在,在您的脚本中创建一个函数来设置攻击点< code>active。

找到玩家在击中敌人后放下剑的关键帧,并在那里添加一个事件。调用另一个将攻击点设置为< code>false的函数。

 类似资料:
  • 使用Chrome DevTools Animations(动画)检查器检查和修改动画。 TL;DR 通过打开Animation Inspector(动画检查器)捕获动画。它会自动检测动画并将它们分组。 通过减慢动画,重播动画,或查看源代码,来检查动画。 通过更改动画的时间,延迟,持续时间或关键帧偏移来修改动画。 概述 在Chrome DevTools动画检查主要有两个目的。 检查动画。 您希望减慢

  • 之前提到过,你可以用-addAnimation:forKey:方法中的key参数来在添加动画之后检索一个动画,使用如下方法: - (CAAnimation *)animationForKey:(NSString *)key; 但并不支持在动画运行过程中修改动画,所以这个方法主要用来检测动画的属性,或者判断它是否被添加到当前图层中。 为了终止一个指定的动画,你可以用如下方法把它从图层移除掉: -

  • 我有一个玩家类,是一个马里奥角色。当我向左走时,我调用一个方法来启动左动画并设置速度。 现在我的问题是:如何为玩家制作碰撞矩形?这是我的矩形:

  • D/OpenGlRenderer:0x702565A400(RippleDrawable)上的endAllActiveAnimators,句柄0x701D23CC60 D/AndroidRuntime:正在关闭VM 致命异常:java.lang.IllegalStateException:指定的消息队列同步屏障令牌尚未发布或已被删除。在android.os.messagequee.removesy

  • 嘿,我的游戏代码有问题。例如,有没有办法检查我的玩家sprite(英雄)右侧是否与obstacle_sprite组发生碰撞? 我只能弄清楚如何检查一般的碰撞,但如果玩家的右侧与障碍物相撞,我只想获得真正的输出。 在我的代码中,我使用一个隐形精灵作为hitbox,并将玩家吸引到这个隐形精灵中以检查碰撞,但使其看起来像障碍物拒绝玩家移动。

  • 到目前为止我们使用的示例其实都没有边界。也就是说,当形状移动到画布的边界处时,什么都没发生,它们只是消失在我们的视野中,再也看不见了。 这也许是你需要的效果。例如,如果你只是创建一段简短的动画,并且动画在到达边界之前就会停止,或者你希望形状移动到画布之外。 但是,如果你不需要这种行为怎么办?如果你希望形状能够感知周围的环境,或者在边界处反弹回来怎么办呢?这种行为可以避免机械性的动画,使动画更加自然