[英]Unity C#, 2D game Spawning loot at selected location
我目前正在統一制作2D游戲太空射擊游戲。 我的問題是掠奪生成腳本。 如果敵人快速生成,則戰利品將不會生成於被摧毀的敵人,而只會生成於剛剛生成的敵人之一。
用於我所有的檢測和戰利品生成的2個腳本:
public void onDeath(bool isDead)
{
if (isDead == true)
{
if (Random.value <= dropProbability)
{
Instantiate(Loot.transform, Loot.transform.position = Enemy.transform.position, Quaternion.Euler(0, 180, 0));
}
}
}
該腳本首先接收2個游戲對象是我的戰利品,其次是敵人。 我實例化了敵人的位置。
void Update()
{
if (healthPoints <= 0)
{
if (gameObject.CompareTag("Enemy"))
{
FindObjectOfType<LootSpawn>().onDeath(true);
Destroy(this.gameObject);
}
else
{
Destroy(this.gameObject);
}
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Ammo") != true)
{
if (other.gameObject.tag != this.gameObject.tag)
{
healthPoints--;
if (other.gameObject.CompareTag("Player1") == true)
{
FindObjectOfType<uiElements>().RemoveHealth();
}
}
}
}
這是我用於“全部”檢測的全局腳本,其中包括子彈,玩家和敵人。 該腳本能正常工作時,每個敵人之間產卵間隔高於2.5秒什么原因少這個問題,我會附上兩張截圖直觀地展現我的問題前拍 , 拍攝后
最后要澄清一下,我希望我的“戰利品”總是在“被摧毀”的敵人身上產生,而不管場上有多少敵人或將它們實例化到場上的速度有多快。 如果不使我的代碼更長,更混亂,誰能指出我正確的方向? 將不勝感激。
本傑明·丹格·約翰遜(Benjamin Danger Johnson)所說的是正確的,盡管這是一歲的問題。 我相信您所說的實際上是解決方案。 我已經解決了這個問題很久了(現在看來,我覺得如何解決它很奇怪,但是我猜想進步使我們變得更好)。
對於任何人來說,都有類似的問題。 不要使用FindObjectOfType而是使用unity的GetComponent: https ://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.