![](/img/trans.png)
[英]Allow objects to pass through an object while also detecting the collision in Unity3D
[英]Unity getting an object to pass through another object but still trigger collision
基本上我需要一个 object 能够像它是一个触发器一样通过一个 object ,但由于我让击中敌人工作的方式(或一种让physics2d.overlapboxall 检测触发器的方式)仍然将它检测为colision ),这是我的武器攻击代码和我需要穿过玩家但也会对玩家造成伤害的敌人。
if (AttackDelay <= 0)
{ //attacking
Collider2D[] EnemiesToDmg = Physics2D.OverlapBoxAll(AttackPos.position,new Vector2(AttackRangeX,AttackRangeY),0, WhatIsEnemy);
for (int i = 0; i < EnemiesToDmg.Length; i++)
{EnemiesToDmg[i].GetComponent<Health>().takeDamage(AttackDamage);}
并为敌人
void FixedUpdate()
{
RotateAndMove(target2);
if (AttackRecharge<=AttackRechargeMax)
{
AttackRecharge += Time.deltaTime;
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.layer==10)
{
player.gameObject.GetComponent<Health>().takeDamage(20);
}
if(collision.gameObject.transform==target2)
{
if (!IsVisible)
{
target2.position = player.position + (player.position - transform.position) / 5;
}
else
{
TeleportToCamera(target2);
}
}
}
正如评论中提到的,这正是isTrigger
的用途。
您可以像这样在代码中更改它:
Collider.isTrigger = true;
这将允许您使用诸如OnTriggerEnter
类的代码,并使您的游戏 object 能够通过
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.