区分具有相同标签的Gameobject碰撞器
Differentiate Gameobject colliders with the same tag
在我的 OnTriggerEnter2D() 中,我有一个 if 条件,用于检查正确的对撞机是否与我的其他游戏对象发生碰撞。举一个简单的例子:有一头狮子和一头大象,标签为“动物”,它们使用相同的脚本来管理它们的变量。基于两个 Animals 中的哪一个进入另一个 Collider 我想执行特定的代码。
我试着给这两种动物一个字符串,告诉他们它们是哪种类型,就像 Lion 是 Lion 一样。但是那没有用。
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 位于带有标签“Animal”的 Lion Prefab 上。如前所述,它为我所有的动物管理各种变量。喜欢m_sAnimalType。
m_aAnimalStat=GameObject.FindGameObjectWithTag("动物").GetComponent(); --> 这样我就可以从该脚本访问我需要的内容。
Unity object 由 组合 定义。这意味着 object 由它的 组件 定义。
因此,在我看来,更好的方法可能是在 Lion object 上添加一个“Lion”组件,除非您有特定的理由不这样做。
你用你的 class Animal : MonoBehaviour
为每个物种创建 child class:class Lion : Animal
、class Elephant : Animal
等
然后,你可以简单地做:
public void OnTriggerEnter2D(Collider2D a_collider2D)
{
if (a_collider2D.GetComponent<Lion>() != null) {
// Lion
}
else if (a_collider2D.GetComponent<Elephant>() != null) {
// Elephant
}
else if (a_collider2D.GetComponent<...>() != null) {
// ...
}
}
在我的 OnTriggerEnter2D() 中,我有一个 if 条件,用于检查正确的对撞机是否与我的其他游戏对象发生碰撞。举一个简单的例子:有一头狮子和一头大象,标签为“动物”,它们使用相同的脚本来管理它们的变量。基于两个 Animals 中的哪一个进入另一个 Collider 我想执行特定的代码。 我试着给这两种动物一个字符串,告诉他们它们是哪种类型,就像 Lion 是 Lion 一样。但是那没有用。
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 位于带有标签“Animal”的 Lion Prefab 上。如前所述,它为我所有的动物管理各种变量。喜欢m_sAnimalType。 m_aAnimalStat=GameObject.FindGameObjectWithTag("动物").GetComponent(); --> 这样我就可以从该脚本访问我需要的内容。
Unity object 由 组合 定义。这意味着 object 由它的 组件 定义。 因此,在我看来,更好的方法可能是在 Lion object 上添加一个“Lion”组件,除非您有特定的理由不这样做。
你用你的 class Animal : MonoBehaviour
为每个物种创建 child class:class Lion : Animal
、class Elephant : Animal
等
然后,你可以简单地做:
public void OnTriggerEnter2D(Collider2D a_collider2D)
{
if (a_collider2D.GetComponent<Lion>() != null) {
// Lion
}
else if (a_collider2D.GetComponent<Elephant>() != null) {
// Elephant
}
else if (a_collider2D.GetComponent<...>() != null) {
// ...
}
}