├── Assets ├── Controllers.meta ├── Controllers │ ├── Demo.controller │ ├── Demo.controller.meta │ ├── Enemy.controller │ ├── Enemy.controller.meta │ ├── Player.controller │ ├── Player.controller.meta │ ├── Shooter.controller │ └── Shooter.controller.meta ├── Materials.meta ├── Materials │ ├── Bullet.mat │ ├── Bullet.mat.meta │ ├── Enemy.mat │ └── Enemy.mat.meta ├── Prefabs.meta ├── Prefabs │ ├── Bullet.prefab │ └── Bullet.prefab.meta ├── Scenes.meta ├── Scenes │ ├── Game.unity │ └── Game.unity.meta ├── Scripts.meta └── Scripts │ ├── Bullet.cs │ ├── Bullet.cs.meta │ ├── Enemy.cs │ └── Enemy.cs.meta ├── ProjectSettings ├── AudioManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshLayers.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── QualitySettings.asset ├── TagManager.asset └── TimeManager.asset └── README.md /Assets/Controllers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4e5574e8d6ffdcc42bade937ee688fb6 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Controllers/Demo.controller: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/Assets/Controllers/Demo.controller -------------------------------------------------------------------------------- /Assets/Controllers/Demo.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1a9d9b25740854549a7262c4c676139c 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Controllers/Enemy.controller: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/Assets/Controllers/Enemy.controller -------------------------------------------------------------------------------- /Assets/Controllers/Enemy.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e32c41e1db8a2154e938b51dc7836f88 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Controllers/Player.controller: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/Assets/Controllers/Player.controller -------------------------------------------------------------------------------- /Assets/Controllers/Player.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ca8a01956a0f734e8385340f2a3a85c 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Controllers/Shooter.controller: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/Assets/Controllers/Shooter.controller -------------------------------------------------------------------------------- /Assets/Controllers/Shooter.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fad1bd78c88de364dbe9b7c4e0212b6f 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3ef4b08e1e141744a96ef6321e1e76c2 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Materials/Bullet.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/Assets/Materials/Bullet.mat -------------------------------------------------------------------------------- /Assets/Materials/Bullet.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5cee52ec964cf4e4ba85ee85d2e977da 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Materials/Enemy.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/Assets/Materials/Enemy.mat -------------------------------------------------------------------------------- /Assets/Materials/Enemy.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0831558a9eea1464db95b0ca03a2fdb8 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 142ac16035ed3854d8090bf60d1e9cee 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Prefabs/Bullet.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/Assets/Prefabs/Bullet.prefab -------------------------------------------------------------------------------- /Assets/Prefabs/Bullet.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4e765656440159f4cabf50ff645fcb7c 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6bf698457cafcb64281d7a54e43e4a72 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Scenes/Game.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/Assets/Scenes/Game.unity -------------------------------------------------------------------------------- /Assets/Scenes/Game.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3813ab4eeaf502340af63a85cd648cf9 3 | DefaultImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d3725a69d35a9844b8e6799026fe7db 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Scripts/Bullet.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class Bullet : MonoBehaviour { 5 | public float speed = 10f; 6 | 7 | // Use this for initialization 8 | void Start () { 9 | Destroy(gameObject, 3f); 10 | } 11 | 12 | // Update is called once per frame 13 | void Update () { 14 | transform.position += transform.forward * Time.deltaTime * speed; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Assets/Scripts/Bullet.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 146e5a8b108c1fa43b4cf6159776d338 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Enemy.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class Enemy : MonoBehaviour { 5 | public Transform shooter; 6 | public Transform bulletPrefab; 7 | public float speed = 2f; 8 | Vector3 direct = -Vector3.forward; 9 | Vector3 orgPos; 10 | 11 | void Start () { 12 | StartCoroutine(StartBulletPattern()); 13 | InvokeRepeating("ChangeDirect", 0f, 2f); 14 | orgPos = transform.position; 15 | } 16 | 17 | void Update () { 18 | Vector3 pos = transform.position + direct * speed * Time.deltaTime; 19 | //pos.x = Mathf.Clamp(pos.x, -4f, 4f); 20 | //pos.z = Mathf.Clamp(pos.z, -4f, 4f); 21 | pos = orgPos + Vector3.ClampMagnitude(pos - orgPos, 4f); 22 | transform.position = pos; 23 | } 24 | 25 | void ChangeDirect() 26 | { 27 | //direct = Vector3.forward * (1 - Random.Range(0, 2)%2 * 2) + Vector3.right * (1 - Random.Range(0, 2)%2 * 2); 28 | direct = Quaternion.Euler(0, Random.Range(0f, 360f), 0) * Vector3.forward; 29 | } 30 | 31 | IEnumerator StartBulletPattern() 32 | { 33 | StartCoroutine(Blast(shooter, bulletPrefab, 20, 1, 120, 0.1f)); 34 | yield return new WaitForSeconds(0.5f); 35 | StartCoroutine(Blast(shooter, bulletPrefab, 20, 1, 120, 0.1f)); 36 | yield return new WaitForSeconds(6f); 37 | StartCoroutine(Spiral(shooter, bulletPrefab, 20, 2, 0.1f, true)); 38 | StartCoroutine(Burst(shooter, bulletPrefab, 20, 5, 1.0f)); 39 | yield return new WaitForSeconds(6f); 40 | StartCoroutine(Burst(shooter, bulletPrefab, 20, 3, 1.0f)); 41 | yield return new WaitForSeconds(0.5f); 42 | StartCoroutine(Burst(shooter, bulletPrefab, 20, 3, 1.0f)); 43 | yield return new WaitForSeconds(3f); 44 | StartCoroutine(Burst(shooter, bulletPrefab, 20, 3, 1.0f)); 45 | StartCoroutine(Flower(shooter, bulletPrefab, 5, 6, 5, 0.1f)); 46 | yield return new WaitForSeconds(8f); 47 | StartCoroutine(StartBulletPattern()); 48 | } 49 | 50 | IEnumerator Blast( Transform shooter, Transform bulletTrans, int shotNum, int volly, float spread, float shotTime) 51 | { 52 | float bulletRot = shooter.eulerAngles.y; //The y-axis rotation in degrees. 53 | if ( shotNum <= 1 ) 54 | { 55 | // Just fire straight. 56 | Instantiate(bulletTrans, shooter.position, Quaternion.Euler(0, bulletRot, 0)); 57 | } 58 | else 59 | { 60 | while(volly > 0) 61 | { 62 | bulletRot = bulletRot - (spread/2); //Offset the bullet rotation so it will start on one side of the z-axis and end on the other. 63 | for( var i = 0; i < shotNum; i++ ) 64 | { 65 | Instantiate(bulletTrans, shooter.position, Quaternion.Euler(0, bulletRot, 0)); // Spawn the bullet with our rotation. 66 | bulletRot += spread/(shotNum-1); //Increment the rotation for the next shot. 67 | if(shotTime > 0) 68 | { 69 | yield return new WaitForSeconds( shotTime ); //Wait time between shots. 70 | } 71 | } 72 | bulletRot = shooter.eulerAngles.y; // Reset the default angle. 73 | volly--; 74 | } 75 | } 76 | } 77 | 78 | IEnumerator Spiral( Transform shooter, Transform bulletTrans, int shotNum, int volly, float shotTime, bool clockwise ) 79 | { 80 | float bulletRot = shooter.eulerAngles.y; //The y-axis rotation in degrees. 81 | while(volly > 0) 82 | { 83 | for( var i = 0; i < shotNum; i++) 84 | { 85 | Instantiate(bulletTrans, shooter.position, Quaternion.Euler(0, bulletRot, 0)); // Spawn the bullet with our rotation. 86 | if(clockwise) 87 | { 88 | bulletRot += 360.0f/shotNum; //Increment the rotation for the next shot. 89 | } 90 | else 91 | { 92 | bulletRot -= 360.0f/shotNum; //Increment the rotation for the next shot. 93 | } 94 | if(shotTime > 0) 95 | { 96 | yield return new WaitForSeconds( shotTime ); //Wait time between shots. 97 | } 98 | } 99 | volly--; //Subtract from volly. 100 | } 101 | } 102 | 103 | IEnumerator Burst( Transform shooter, Transform bulletTans, int shotNum, int volly, float vollyTime ) 104 | { 105 | float bulletRot = 0.0f; //The y-axis rotation in degrees. 106 | while(volly > 0) 107 | { 108 | for( var i = 0; i < shotNum; i++) 109 | { 110 | Instantiate(bulletTans, shooter.position, Quaternion.Euler(0, bulletRot, 0)); //Spawn the bullet with our rotation. 111 | bulletRot += 360.0f/shotNum; //Increment the rotation for the next shot. 112 | } 113 | bulletRot = 0.0f; 114 | volly--; 115 | yield return new WaitForSeconds( vollyTime ); 116 | } 117 | } 118 | 119 | IEnumerator Flower( Transform shooter, Transform bulletTrans, float flowerTime, int directions, float rotTime, float waitTime ) 120 | { 121 | float bulletRot = 0.0f; 122 | while( flowerTime > 0 ) 123 | { 124 | for( var i = 0; i < directions; i++) 125 | { 126 | Instantiate( bulletTrans, shooter.position, Quaternion.Euler( 0, bulletRot, 0)); //Spawn the bullet with our rotation; 127 | bulletRot += 360.0f/directions; 128 | } 129 | bulletRot += rotTime; 130 | if( bulletRot > 360) 131 | { 132 | bulletRot -= 360; 133 | } 134 | else if( bulletRot < 0 ) 135 | { 136 | bulletRot += 360; 137 | } 138 | flowerTime -= waitTime; 139 | yield return new WaitForSeconds( waitTime ); 140 | } 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /Assets/Scripts/Enemy.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 040e2dd948ec65b41b5219e5391caa8d 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/NavMeshLayers.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/NavMeshLayers.asset -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/textcube/bullet-patterns-test/fe5ef6403a7b24ad47c96bcd3e8b154b890fdda9/ProjectSettings/TimeManager.asset -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Unity Simple Bullet Patterns Example 2 | ======================================= 3 | 4 | For those who want to make an bullet patterns for the first time will help. 5 | 6 | Overview: 7 | - To make it easier for beginners to understand 8 | the short length of the source code was created. 9 | - Demo Link : http://www.youtube.com/watch?v=1HwJh-1oZdI 10 | 11 | Testing in Unity Editor: 12 | - Run ".../Game.unity"! 13 | - Click play button. 14 | 15 | Build & Run : 16 | - Configure "Build Setting" sub menu in File Menu. 17 | - Set Build Platform & Press "Run & Build" Button. 18 | - Set Your Build Folder. 19 | 20 | Note: 21 | - NGUI was used. Install this one first. 22 | 23 | Contact: 24 | - Homepage Link : http://qatop.com 25 | - Facebook Link : http://facebook.com/buntgames 26 | 27 | 28 | [![INSTALL VIDEO](http://img.youtube.com/vi/E7oWrSpjGls/0.jpg)](http://www.youtube.com/watch?v=E7oWrSpjGls) 29 | 30 | 31 | [![INSTALL VIDEO](http://img.youtube.com/vi/9IcwD9ZB5nM/0.jpg)](http://www.youtube.com/watch?v=9IcwD9ZB5nM) 32 | --------------------------------------------------------------------------------