【发布时间】:2023-03-11 20:19:02
【问题描述】:
在我的 OnTriggerEnter2D() 中,我有一个 if 条件来检查正确的对撞机是否与我的其他游戏对象发生碰撞。举个简单的例子:有一只狮子和一只大象,标签为“动物”,它们使用相同的脚本来管理它们的变量。根据两个动物中的哪一个进入另一个碰撞器,我想执行特定的代码。 我试图给这两种动物一个字符串,告诉它们是哪种类型,就像狮子是狮子一样。但这没有用。
public void OnTriggerEnter2D(Collider2D a_collider2D)
{
if (a_collider2D.gameObject.CompareTag("Animal") && m_sAnimalStat.m_sAnimalType.Equals("Lion"))
{//code here if its a Lion}
还有其他方法可以区分对撞机吗?将它们放在不同的图层上也没有效果。 OnTriggerEnter2D 位于动物正走向的另一个游戏对象上。 AnimaStatManager 位于具有标签“动物”的 Lion Prefab 上。如前所述,它管理我所有动物的各种变量。像 m_sAnimalType。 m_aAnimalStat=GameObject.FindGameObjectWithTag("Animal").GetComponent(); --> 以便我可以从该脚本中访问我需要的内容。
【问题讨论】:
-
Animal 对象上的 OnTriggerEnter2D 方法吗?还是“门户”对象?
-
方法在“门户”对象上。
-
“m_sAnimalType”从何而来?我的意思是,它在哪里声明?您引用它的方式让我认为它来自“门户”对象,这没有任何意义。
-
哦该死的我的错,我忘了输入 VariableManager 类作为它的来源。我将编辑问题
-
有不同的方式来做你想做的事。根据您的逻辑,一种快速方法是使用“a_collider2D”参数通过 GetComponent
() 访问 Animal 对象。 var currentAnimal = a_collider2D.GetComponent<Animal>();并检查动物类型是否是您需要检查的,例如大象、猫等。
标签: unity3d gameobject