Unity2D Стрельба турели по врагам | Проблема со скриптом

Программирование на Юнити.

Unity2D Стрельба турели по врагам | Проблема со скриптом

Сообщение FirstGameMaker 25 окт 2019, 16:48

За неимением опыта вновь обращаюсь к вам. Имеется вот такой простенький скрипт:
Синтаксис:
Используется csharp
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Fire : MonoBehaviour

    {
        public float speed = 10;
        public Rigidbody2D bullet;
        public Transform gunPoint;
        public float fireRate = 1;
        public Collider2D col;


        float elapsedTime = 0.0f;

        void OnTriggerStay2D(Collider2D col)
        {
            if (col.gameObject.tag == "Enemy")
            {
                elapsedTime += Time.deltaTime;

                if (elapsedTime > fireRate)
                {
                    elapsedTime = 0.0f;
                    Vector3 direction = gunPoint.position;
                    Rigidbody2D clone = Instantiate(bullet, gunPoint.position, Quaternion.identity) as Rigidbody2D;
                    clone.velocity = transform.TransformDirection(gunPoint.right * speed);
                    clone.transform.right = gunPoint.right;
                }
            }
        }
    }

 

и всё было бы хорошо, если бы при появлении второго врага в коллайдере турель не начинала бы стрелять в два раза быстрее. Понятия не имею как это исправить, любой помощи буду благодарен.
FirstGameMaker
UNец
 
Сообщения: 39
Зарегистрирован: 29 апр 2019, 11:57

Re: Unity2D Стрельба турели по врагам | Проблема со скриптом

Сообщение 1max1 25 окт 2019, 21:05

Синтаксис:
Используется csharp
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Fire : MonoBehaviour
{
    public float speed = 10;
    public Rigidbody2D bullet;
    public Transform gunPoint;
    public float fireRate = 1;
    public Collider2D col;

    List<GameObject> targets = new List<GameObject>();

    float elapsedTime = 0.0f;

    void Update()
    {
        elapsedTime += Time.deltaTime;

        if (targets.Count > 0 && elapsedTime > fireRate)
        {
            elapsedTime = 0.0f;
            Vector3 direction = gunPoint.position;
            Rigidbody2D clone = Instantiate(bullet, gunPoint.position, Quaternion.identity) as Rigidbody2D;
            clone.velocity = transform.TransformDirection(gunPoint.right * speed);
            clone.transform.right = gunPoint.right;
        }
    }

    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.tag == "Enemy")
        {
            targets.Add(col.gameObject);
        }
    }

    void OnTriggerExit2D(Collider2D col)
    {
        if (col.gameObject.tag == "Enemy")
        {
            targets.Remove(col.gameObject);
        }
    }
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Unity2D Стрельба турели по врагам | Проблема со скриптом

Сообщение Jarico 25 окт 2019, 21:43

Сейчас бы юзать при стрельбе Instantiate

Используй пул объектов... На хабре есть статейка
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 11