View difference between Paste ID: wqE94ufN and 2apatTgN
SHOW: | | - or go back to the newest paste.
1
using System.Collections;
2
using System.Collections.Generic;
3
using UnityEngine;
4
5
public class AutoShoot : MonoBehaviour
6
{
7
    public ShootProfile shootProfile;
8
    public GameObject bulletPrefabs;
9
    public Transform firePoint;
10
11
    private float totalSpread;
12
    private WaitForSeconds rate, interval;
13
14
	// Use this for initialization
15
	void OnEnable ()
16
    {
17
        interval = new WaitForSeconds(shootProfile.interval);
18
        rate = new WaitForSeconds(shootProfile.fireRate);
19
20
        if (firePoint == null)
21
            firePoint = transform;
22
23
        totalSpread = shootProfile.spread * shootProfile.amount;
24
25
        StartCoroutine(ShootingSequence());
26
    }
27
28
    private void OnDisable()
29
    {
30
        StopAllCoroutines();
31
    }
32
33
    IEnumerator ShootingSequence()
34
    {
35
        yield return rate;
36
37
        while (true)
38
        {
39
            float angle = 0f;
40
41
            for (int i = 0; i < shootProfile.amount; i++)
42
            {
43
                angle = totalSpread * (i / (float)shootProfile.amount);
44
                angle -= (totalSpread / 2f) - (shootProfile.spread / shootProfile.amount);
45
46
                Shoot(angle);
47
48
                if (shootProfile.fireRate > 0f)
49
                    yield return rate;
50
            }
51
52
            yield return interval;
53
        }
54
    }
55
56
    void Shoot(float angle)
57
    {   
58-
        GameObject temp = PoolingManager.instance.UseObject(bulletPrefabs, firePoint.position, firePoint.rotation);
58+
        GameObject temp = PoolingManager.instance.UseObject(bulletPrefabs, firePoint.position, Quaternion.identity);
59
        temp.name = shootProfile.damage.ToString();
60
        temp.transform.Rotate(Vector3.up, angle);
61
        temp.GetComponent<BulletMove>().speed = shootProfile.speed;
62
        PoolingManager.instance.ReturnObject(temp, shootProfile.destroyRate);
63
    }
64
}