玩家=忍者男孩 敌人=忍者女孩
我有两个游戏对象,一个是敌人,另一个是同时具有colliders2D和苯乙烯2D的玩家。
当我在他眼中时,我为敌人追逐了我的剧本(为此,我做了一个boxcollider2d),而当他离他足够近时,他开始进攻。为了检测他和我的剑之间的碰撞,我制作了一个边缘碰撞器,他在开始攻击时启用了该碰撞器,并在完成攻击动画时将其禁用了
问题是当我不移动时,播放器的OnEnterTrigger2D函数无法检测到碰撞
如果我处于这个位置(玩家显然在对撞机内)
这是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());
}
}
我注意到,如果在玩游戏时手动激活敌人的扳机,即使玩家不移动,玩家也会受到伤害