在每次新的相遇中,如何从敌人那里取回游戏对象?这不是我可以插入Unity检查器的东西。我没有编写任何代码,因为我不知道从哪里开始。到目前为止,我认为:
我需要一个可以存储游戏对象的变量,但是当遇到多个敌人时会发生什么?
GameObject getEnemy;
我可能会设置一个对撞机,以在检测到敌人时触发。现在我要存储GameObject
。
getEnemy = getComponent<GameObject>();
但这不起作用。有人知道为什么吗?
*****************************实际代码(无效)************** ********* (类名EnemyDetection)
public static GameObject enemyObj;
void OnTriggerEnter(){
enemyObj = other.GetComponent<GameObject>(); //Grabs enemy object to pass
to the enemies class
}
(类名敌人)
public void OnCollisionEnter(Collision collision)
{
if (collision.collider.tag == "Bullet")
{
GameObject en = EnemyDetection.enemyObj;
Hp -= 25;
Debug.Log("Hit! HP left " + Hp);
if ( Hp <= 0)
{
Destroy(en); // Destroys GameObject
}
}
}
答案 0 :(得分:1)
你很近。
评论GameObjects
中提到的事物包含不同的Components
,因此您进行GetComponent<SomeComponent>
来获取游戏对象而非游戏对象本身上的组件
根据您的情况。 在触发器回调内部,从传递的Collider对象中获取游戏对象
//Or whatever callback you are using
void OnTriggerEnter(Collider other)
{
//this "other" contains the gameobject as reference
getEnemy = other.gameObject;
//if now you need components from this then you do
//example
// other.gameObject.GetComponent<SomeComponent>();
}
关于多个敌人等,您可以将其存储在列表或字典中。
//INCORRECT (There is no such thing as GetComponent<GameObject>())
enemyObj = other.GetComponent<GameObject>();
//CORRECT
enemyObj = other.gameObject;
并且您的OnTriggerEnter需要具有Collider参数
void OnTriggerEnter(Collider other)
{
enemyObj = other.gameObject;
}