C# 敌方预制场不射击

C# 敌方预制场不射击,c#,unity3d,C#,Unity3d,我正在创建一个激光防御游戏,我需要我的敌人在移动时射击,但是,他们没有射击。我已经创建了一个脚本《敌人的射击》,基本上是这样写的:敌人应该射击,但事实并非如此。有人能检查一下我的代码,告诉我为什么敌人不开枪吗 下图是EnemyPrefact检查器: } 脚本: using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyShooting : MonoBehavi

我正在创建一个激光防御游戏,我需要我的敌人在移动时射击,但是,他们没有射击。我已经创建了一个脚本《敌人的射击》,基本上是这样写的:敌人应该射击,但事实并非如此。有人能检查一下我的代码,告诉我为什么敌人不开枪吗

下图是EnemyPrefact检查器: }

脚本:

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;
int CurrentNumberOfHits = 0;
Coroutine FireCoroutine;

void OnTriggerEnter2D(Collider2D collider)
{
    if(collider.gameObject.tag == "PlayerLaser")
    {
        if(CurrentNumberOfHits < MaxNumberOfHits)
        {
            CurrentNumberOfHits++;
            Destroy(collider.gameObject);
        }
    }
}

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

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);
    }
}

// Update is called once per frame
void Update ()
{
    DestroyEnemy();
}
使用系统集合;
使用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)
{
摧毁(游戏对象);
}
}
私人空间火灾()
{
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);
}
}
//每帧调用一次更新
无效更新()
{
消灭敌人();
}

您在任何时候都不会调用您的拍摄方法

按照游戏逻辑,您需要调用
BecomeVisible();

// Use this for initialization
void Start () {
  BecomeVisible();
}