如果我的玩家不在2D模式下移动,对撞机将不会触发

时间:2020-03-31 18:11:29

标签: c# unity3d

玩家=忍者男孩 敌人=忍者女孩

我有两个游戏对象,一个是敌人,另一个是同时具有colliders2D和苯乙烯2D的玩家。 当我在他眼中时,我为敌人追逐了我的剧本(为此,我做了一个boxcollider2d),而当他离他足够近时,他开始进攻。为了检测他和我的剑之间的碰撞,我制作了一个边缘碰撞器,他在开始攻击时启用了该碰撞器,并在完成攻击动画时将其禁用了
here is the enemy with the sword collider

问题是当我不移动时,播放器的OnEnterTrigger2D函数无法检测到碰撞 如果我处于这个位置(玩家显然在对撞机内) enter image description here

这是Player类

    public override IEnumerator TakeDamage()
    {
        if (!immortal && !IsDead) 
        {
            health -= 10;
            Animator.SetLayerWeight(1, 0);

            if (!IsDead)
            {
                Animator.SetTrigger("damage");
                Rigidbody.velocity = Vector2.zero;
                immortal = true;
                yield return new WaitForSeconds(immortalTimer);
                immortal = false;
            }
        }

        if(IsDead)
        {
            Animator.SetTrigger("dead");
        }
    }

    protected override void OnTriggerEnter2D(Collider2D collider)
    {
        Debug.Log(collider.name);
        base.OnTriggerEnter2D(collider);
    }

玩家从角色

继承
public abstract IEnumerator TakeDamage();

  protected virtual void OnTriggerEnter2D(Collider2D collider)
    {
        if (damagingObjects.Contains(collider.tag))
        {
            StartCoroutine(TakeDamage());
        }
    }

我注意到,如果在玩游戏时手动激活敌人的扳机,即使玩家不移动,玩家也会受到伤害

0 个答案:

没有答案