Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 粒子系统对多个敌人不起作用_C#_Unity3d - Fatal编程技术网

C# 粒子系统对多个敌人不起作用

C# 粒子系统对多个敌人不起作用,c#,unity3d,C#,Unity3d,我有一个粒子系统,当敌人被摧毁的时候。我有多个敌人来自同一条路径(使用相同的预制件),粒子系统只对第一个敌人起作用。有人能告诉我为什么它对其他人不起作用吗?多谢各位 敌人射击纸条(这是爆炸的代码): 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共阶级的敌人:单一行为{ [SerializeField]浮点EnemyLaserSpeed=10f; [SerializeField]浮点EnemyLaserFireTime; [Seria

我有一个粒子系统,当敌人被摧毁的时候。我有多个敌人来自同一条路径(使用相同的预制件),粒子系统只对第一个敌人起作用。有人能告诉我为什么它对其他人不起作用吗?多谢各位

敌人射击纸条(这是爆炸的代码):

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共阶级的敌人:单一行为{
[SerializeField]浮点EnemyLaserSpeed=10f;
[SerializeField]浮点EnemyLaserFireTime;
[SerializeField]GameObject LaserBulletteneMyPrefab;
[SerializeField]int MaxNumberOfHits=1;
公共交通爆炸;
int CurrentNumberOfHits=0;
协同程序,协同程序;
void OnTriggerEnter2D(碰撞的R2D碰撞器)
{
if(collider.gameObject.tag==“PlayerLaser”)
{
如果(CurrentNumberOfHits=MaxNumberOfHits)
{
摧毁(游戏对象);
EnemySpawner.Instance.oneneMyDath();//告诉EnemySpawner有人死了
}
}
私人空间火灾()
{
FireCoroutine=startcroutine(shootcontinuoused());
}
虚空变得可见
{
火();
}
IEnumerator()
{
while(true)
{
GameObject LaserBulletEnemy=实例化(LaserBulletEnemyPreFab,this.transform.position,Quaternion.identity)为GameObject;
LaserBulletEnemy.GetComponent().velocity=新矢量2(0,EnemyLaserSpeed);
EnemyLaserFireTime=随机范围(0.5f,0.9f);
返回新的WaitForSeconds(EneyLaserFireTime);
}
}
//用于初始化
无效开始(){
变得可见();
}
//每帧调用一次更新
无效更新(){
消灭敌人();
}
}
EnemySpawner:(我认为这个脚本可能会有所帮助,所以我附加了它)

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共阶级的敌人:单一行为
{
[SerializeField]游戏对象EnemyPreFab;
[SerializeField]int maxFeeds=30;
[SerializeField]float EneySpawnTime=1.00001f;
[SerializeField]游戏对象第一航路点;
int currentNumof=0;
公共int ENEMIEXTLEVEL=7;
公共int KilledEnemies=0;
公共级别经理;
public static EnemySpawner实例=null;
int timeseneyhit;
IEnumerator-spokingnemies()
{
while(currentNumOfEquires=EnemiesToNextLevel)
{
LaserLevel Manager.LoadLevel(“NextLevel菜单”);
}
}
}

可能需要重置?@jspcal你是什么意思?你能附上预制件的检查视图吗?敌人和你的粒子系统。也许它需要重置?@jspcal你是什么意思?你能附上你预制场的检视视图吗?敌人和你的粒子系统。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyShooting : MonoBehaviour {


[SerializeField] float EnemyLaserSpeed = 10f;
[SerializeField] float EnemyLaserFireTime;
[SerializeField] GameObject LaserBulletEnemyPreFab;
[SerializeField] int MaxNumberOfHits = 1;
public Transform explosion;


int CurrentNumberOfHits = 0;
Coroutine FireCoroutine;

void OnTriggerEnter2D(Collider2D collider)
{
    if(collider.gameObject.tag == "PlayerLaser")
    {
        if (CurrentNumberOfHits < MaxNumberOfHits)
        {
            CurrentNumberOfHits++;
            Destroy(collider.gameObject);
            Score.ScoreValue += 2;//The user will be rewarded 1 point

        }
        if (explosion)//EXPLOSION CODE
        {
            GameObject exploder = ((Transform)Instantiate(explosion, this.transform.position, this.transform.rotation)).gameObject;
            Destroy(exploder, 2.0f);
        }


    }
}


void DestroyEnemy()
{
    if(CurrentNumberOfHits >= MaxNumberOfHits)
    {
        Destroy(gameObject);

        EnemySpawner.Instance.OnEnemyDeath(); // Tell the EnemySpawner that someone died


    }

}

private void Fire()
{
    FireCoroutine = StartCoroutine(ShootContinuously());
}

void BecomeVisible()
{
    Fire();
}

IEnumerator ShootContinuously()
{
    while (true)
    {
        GameObject LaserBulletEnemy = Instantiate(LaserBulletEnemyPreFab, this.transform.position, Quaternion.identity) as GameObject;
        LaserBulletEnemy.GetComponent<Rigidbody2D>().velocity = new Vector2(0, EnemyLaserSpeed);
        EnemyLaserFireTime = Random.Range(0.5f, 0.9f);
        yield return new WaitForSeconds(EnemyLaserFireTime);
    }
}
// Use this for initialization
void Start () {

    BecomeVisible();
}

// Update is called once per frame
void Update () {

    DestroyEnemy();

    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class EnemySpawner : MonoBehaviour
{


[SerializeField] GameObject EnemyPreFab;
[SerializeField] int MaxEnemies = 30;
[SerializeField] float EnemySpawnTime = 1.00001f;
[SerializeField] GameObject FirstWaypoint;
int CurrentNumOfEnemies = 0;
public int EnemiesToNextLevel = 7;
public int KilledEnemies = 0;
public LevelManager myLevelManager;
public static EnemySpawner Instance = null;
int timesEnemyHit;


IEnumerator SpawningEnemies()
{
    while (CurrentNumOfEnemies <= MaxEnemies)
    {
        GameObject Enemy = Instantiate(EnemyPreFab, this.transform.position, Quaternion.identity);
        CurrentNumOfEnemies++;
        yield return new WaitForSeconds(EnemySpawnTime);
    }
}

void Start()
{
    if (Instance == null)
        Instance = this;
    StartCoroutine(SpawningEnemies());
    timesEnemyHit = 0;
    if (this.gameObject.tag == "EnemyHit")
    {
        CurrentNumOfEnemies++;
    }
}

public void OnEnemyDeath()
{
    CurrentNumOfEnemies--;
    /*     
    if (CurrentNumOfEnemies < 5)
     {
         // You killed everyone, change scene: 
         LaserLevelManager.LoadLevel("NextLevelMenu");
     }
     */
    KilledEnemies++;

    if (KilledEnemies >= EnemiesToNextLevel)
    {
        LaserLevelManager.LoadLevel("NextLevelMenu");
    }



    }
}