Враг Префаб не стреляет - PullRequest
1 голос
/ 07 мая 2019

Я создаю игру лазерного защитника, и мне нужно, чтобы мои враги стреляли по мере их движения, однако они не стреляют.Я создал сценарий EnemyShooting, где в основном писал, что враг должен стрелять, но это не так.Может кто-нибудь просмотреть мой код и сказать, почему враги не стреляют?

На изображении ниже изображен инспектор противника: Enemy Inspector}

Скрипт:

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

1 Ответ

1 голос
/ 07 мая 2019

Вы не называете свои методы стрельбы в любой момент.

, следуя логике игры, нужно позвонить BecomeVisible();.

// Use this for initialization
void Start () {
  BecomeVisible();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...