因此,我一直在用C#和Unity开发2D平台游戏,并且作为游戏的一部分,我一直在开发游戏道具。其中之一是不可战胜的,因此,当玩家与游戏对象碰撞时,他们无法在一段时间内被杀死。我是Unity和C#的新手,并且可以使用'.enabled'启用/禁用附加到同一对象的外部脚本。但是,当我启动电源时,物体会被摧毁,但如果我与敌人或物体相撞,我仍然会死亡。谁能看到为什么会这样。
下面是我开发的脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InvincibilityPowerup : MonoBehaviour
{
public int Duration = 15;
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "Shield")
{
Destroy(GameObject.Find("Invincibility"));
StartCoroutine("Invincible");
}
}
IEnumerator Invincible()
{
Collision pIn = gameObject.GetComponent<Collision>();
pIn.enabled = false;
yield return new WaitForSeconds(Duration);
pIn.enabled = true;
}
}
答案 0 :(得分:1)
1)GameObject.Find
在这里完全没有必要。您已经知道哪个对象是无敌威力:它是脚本附带的对象
2)Collision pIn = gameObject.GetComponent<Collision>();
都a)不能满足您的要求(您想要获得OTHER游戏对象!)b)仍然不起作用(Collision
不是组件,Collider
是)
3)您要在启动协程之前销毁this
,这意味着您的协程也已销毁。