From 3295e58965b61cf18ae3990a9437791dc28781a8 Mon Sep 17 00:00:00 2001 From: Gregory Campbell Date: Sat, 11 Jul 2020 13:26:02 -0400 Subject: [PATCH] Added all four gun types and firing bullets stable (although there is some slight 'recoil' for some variations) --- Assets/Prefabs/Bullet.prefab | 3 +- Assets/Prefabs/Obstacle.prefab | 4 +- Assets/Scenes/Scene.unity | 20 +++++++++ Assets/Scripts/BulletScript.cs | 10 +---- Assets/Scripts/PlayerScript.cs | 69 ++++++++++++++++++++++++++++++-- ProjectSettings/TagManager.asset | 1 + 6 files changed, 92 insertions(+), 15 deletions(-) diff --git a/Assets/Prefabs/Bullet.prefab b/Assets/Prefabs/Bullet.prefab index 147b2d5..61c5c33 100644 --- a/Assets/Prefabs/Bullet.prefab +++ b/Assets/Prefabs/Bullet.prefab @@ -92,7 +92,7 @@ Rigidbody2D: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6732034634797273297} - m_BodyType: 0 + m_BodyType: 1 m_Simulated: 1 m_UseFullKinematicContacts: 0 m_UseAutoMass: 0 @@ -143,4 +143,3 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a30097626420c2945aa94dc3cee845d7, type: 3} m_Name: m_EditorClassIdentifier: - speed: 5 diff --git a/Assets/Prefabs/Obstacle.prefab b/Assets/Prefabs/Obstacle.prefab index 056659b..1ca3fcb 100644 --- a/Assets/Prefabs/Obstacle.prefab +++ b/Assets/Prefabs/Obstacle.prefab @@ -15,7 +15,7 @@ GameObject: - component: {fileID: 7683230909844016913} m_Layer: 0 m_Name: Obstacle - m_TagString: Untagged + m_TagString: Obstacle m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -130,7 +130,7 @@ Rigidbody2D: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6511841225854600656} - m_BodyType: 2 + m_BodyType: 0 m_Simulated: 1 m_UseFullKinematicContacts: 0 m_UseAutoMass: 0 diff --git a/Assets/Scenes/Scene.unity b/Assets/Scenes/Scene.unity index f859474..7b87bfa 100644 --- a/Assets/Scenes/Scene.unity +++ b/Assets/Scenes/Scene.unity @@ -396,6 +396,11 @@ PrefabInstance: propertyPath: m_Name value: Wall Down objectReference: {fileID: 0} + - target: {fileID: 6511841225854600656, guid: 839e7f2e94b70514dbc986f93edcae38, + type: 3} + propertyPath: m_TagString + value: Obstacle + objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 5726703938094994942, guid: 839e7f2e94b70514dbc986f93edcae38, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 839e7f2e94b70514dbc986f93edcae38, type: 3} @@ -477,6 +482,11 @@ PrefabInstance: propertyPath: m_Name value: Wall Left objectReference: {fileID: 0} + - target: {fileID: 6511841225854600656, guid: 839e7f2e94b70514dbc986f93edcae38, + type: 3} + propertyPath: m_TagString + value: Obstacle + objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 5726703938094994942, guid: 839e7f2e94b70514dbc986f93edcae38, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 839e7f2e94b70514dbc986f93edcae38, type: 3} @@ -609,6 +619,11 @@ PrefabInstance: propertyPath: m_Name value: Wall Up objectReference: {fileID: 0} + - target: {fileID: 6511841225854600656, guid: 839e7f2e94b70514dbc986f93edcae38, + type: 3} + propertyPath: m_TagString + value: Obstacle + objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 5726703938094994942, guid: 839e7f2e94b70514dbc986f93edcae38, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 839e7f2e94b70514dbc986f93edcae38, type: 3} @@ -690,6 +705,11 @@ PrefabInstance: propertyPath: m_Name value: Wall Right objectReference: {fileID: 0} + - target: {fileID: 6511841225854600656, guid: 839e7f2e94b70514dbc986f93edcae38, + type: 3} + propertyPath: m_TagString + value: Obstacle + objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 5726703938094994942, guid: 839e7f2e94b70514dbc986f93edcae38, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 839e7f2e94b70514dbc986f93edcae38, type: 3} diff --git a/Assets/Scripts/BulletScript.cs b/Assets/Scripts/BulletScript.cs index f469a94..9e290ad 100644 --- a/Assets/Scripts/BulletScript.cs +++ b/Assets/Scripts/BulletScript.cs @@ -24,20 +24,14 @@ public class BulletScript : MonoBehaviour void OnCollisionEnter2D(Collision2D other) { - if(other.gameObject.tag != "Player") + if(other.gameObject.tag != "Player" && other.gameObject.tag != "Bullet") { Destroy(gameObject); } - - if(other.gameObject.tag == "Player") - { - Physics2D.IgnoreCollision( - other.gameObject.GetComponent(), GetComponent()); - } } - void OnBecameInvisible() + void OnBecameInvisible() { Destroy(gameObject); } diff --git a/Assets/Scripts/PlayerScript.cs b/Assets/Scripts/PlayerScript.cs index da5fc04..135f700 100644 --- a/Assets/Scripts/PlayerScript.cs +++ b/Assets/Scripts/PlayerScript.cs @@ -28,9 +28,7 @@ public class PlayerScript : MonoBehaviour if(Input.GetButton("Fire1") && myTime > nextFire) { nextFire = myTime + 0.5f; - GameObject newBullet = Instantiate(bullet, transform.position, Quaternion.Euler(0,0,Random.Range(0.0f, 360.0f))); - float scaleChange = Random.Range(0.5f, 1.5f); - newBullet.transform.localScale = new Vector2(scaleChange, scaleChange); + GunFire(Random.Range(0.0f, 360.0f)); nextFire = nextFire - myTime; myTime = 0.0f; } @@ -61,4 +59,69 @@ public class PlayerScript : MonoBehaviour } + void GunFire(float aim) + { + + int gunSelect = Random.Range(0,4); + GameObject newBullet; + float scaleChange = 1.0f; + Vector3 pos = PlayerCircle(transform.position); + Quaternion rot = Quaternion.FromToRotation(Vector3.down, transform.position-pos); + + switch(gunSelect) + { + + //pistol + case 0: + newBullet = Instantiate(bullet, pos, rot); + scaleChange = Random.Range(0.5f, 1.5f); + newBullet.transform.localScale = new Vector2(scaleChange, scaleChange); + break; + //shotgun + case 1: + newBullet = Instantiate(bullet, pos, rot); + scaleChange = Random.Range(0.5f, 1.5f); + newBullet.transform.localScale = new Vector2(scaleChange, scaleChange); + newBullet = Instantiate(bullet, pos+((Vector3.up+Vector3.right)*0.75f), Quaternion.FromToRotation(Vector3.down, transform.position-(pos+((Vector3.up+Vector3.right)*0.75f)))); + newBullet.transform.localScale = new Vector2(scaleChange, scaleChange); + newBullet = Instantiate(bullet, pos+((Vector3.down+Vector3.left)*0.75f), Quaternion.FromToRotation(Vector3.down, transform.position-(pos+((Vector3.down+Vector3.left)*0.75f)))); + newBullet.transform.localScale = new Vector2(scaleChange, scaleChange); + break; + //machinegun + case 2: + newBullet = Instantiate(bullet, pos, rot); + scaleChange = Random.Range(0.5f, 1.5f); + newBullet.transform.localScale = new Vector2(scaleChange, scaleChange); + for(int i = 1 ; i < 5; i++) + { + newBullet = Instantiate(bullet, pos+(Vector3.down+Vector3.left)*(0.1f*i), Quaternion.FromToRotation(Vector3.down, transform.position-(pos+(Vector3.down+Vector3.left)*(0.1f*i)))); + newBullet.transform.localScale = new Vector2(scaleChange, scaleChange); + } + break; + //railgun + case 3: + scaleChange = Random.Range(0.5f, 1.5f); + for(int i = 0 ; i < 100; i++) + { + newBullet = Instantiate(bullet, pos, rot); + newBullet.transform.localScale = new Vector2(scaleChange, scaleChange); + } + break; + + } + + Vector3 PlayerCircle (Vector3 center){ + float radius = 1.25f; + float ang = Random.value * 360; + Vector3 circle; + + circle.x = center.x + radius * Mathf.Sin(ang * Mathf.Deg2Rad); + circle.y = center.y + radius * Mathf.Cos(ang * Mathf.Deg2Rad); + circle.z = 0; + + return circle; + } + + } + } diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 5975165..2a0d9bf 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -6,6 +6,7 @@ TagManager: tags: - Bullet - Enemy + - Obstacle layers: - Default - TransparentFX