簡體   English   中英

Unity C#,2D游戲在選定位置產生戰利品

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM