Страница 1 из 1

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

СообщениеДобавлено: 25 окт 2019, 16:48
FirstGameMaker
За неимением опыта вновь обращаюсь к вам. Имеется вот такой простенький скрипт:
Синтаксис:
Используется 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;
                }
            }
        }
    }

 

и всё было бы хорошо, если бы при появлении второго врага в коллайдере турель не начинала бы стрелять в два раза быстрее. Понятия не имею как это исправить, любой помощи буду благодарен.

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

СообщениеДобавлено: 25 окт 2019, 21:05
1max1
Синтаксис:
Используется 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);
        }
    }
}

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

СообщениеДобавлено: 25 окт 2019, 21:43
Jarico
Сейчас бы юзать при стрельбе Instantiate

Используй пул объектов... На хабре есть статейка