[英]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.