c# - 我试图在与我的玩家碰撞后破坏一个游戏对象,然后重新实例化它以再次碰撞它,形成一个循环,但它不起作用
问题描述
//所以基本上这是更新功能。代码的所有部分都在工作。唯一的问题是我的弹丸首先被实例化,1.5 秒后它被摧毁。2 秒后(timebtwshots 变量设置为 2)另一个射弹被实例化,但 1.5 秒后,它没有被停用。因此,弹丸在我的屏幕上杂乱无章。
void Update()
{
if (timebtwshots <= 0)
{
StartCoroutine(blah());
}
else
{
timebtwshots -= Time.deltaTime;
}
IEnumerator blah()
{
projectile.SetActive(true);
Instantiate(projectile, transform.position, Quaternion.identity);
timebtwshots = starttimebtwshots;
yield return new WaitForSeconds(1.5f);
projectile.SetActive(false);
}
}
解决方案
我看不到在哪里projectile
定义。也许是一个全局对象?
无论如何,当你实例化一个新的射弹时,如果你想控制它,你必须首先将它分配给一个变量。
var spawnedProjectile = Instantiate(projectile, transform.position, Quaternion.identity);
从那时起,您可以控制 THAT spawnedProjectile
。在您的代码中,您总是访问第一个projectile
,因此不会禁用新的代码(您继续调用.setActive(false)
已经激活为假的射弹)。
但是,您并没有破坏对象,您只是将 Active 设置为 false。您可能会考虑使用Destroy(spawnedProjectile)
来完全销毁游戏对象。
推荐阅读
- notifications - 如何为 twilio whatsapp 通知启用生产模式
- salesforce - 作为另一个 Salesforce 用户发送文档签名合同
- python - 如何使用 Keras 函数式 API 模型的输出作为另一个模型的输入
- java - Java 类的 Groovy Spock 测试 - 如何模拟 Clob
- arrays - 连接操作后根据值过滤 - MongoDB
- javascript - g元素的svg坐标大于其他元素
- java - 我可以在没有粘性会话的情况下使用 Thymeleaf 模板 + 绑定吗?
- python - 转换字典python中的列表列表
- javascript - 没有在函数内部使用的参数(前面带有下划线)的目的是什么?
- python - 防止被禁止使用 BeautifulSoup 进行谷歌抓取