From f03c0f4469be5db9de4e2d0289c922a13182f8da Mon Sep 17 00:00:00 2001 From: Saibotk Date: Sun, 22 Apr 2018 23:49:43 +0200 Subject: [PATCH] Attack package 2 simple attack types IAttack interface --- Assets/Scripts/Entities/Attack.meta | 8 ++++ Assets/Scripts/Entities/Attack/IAttack.cs | 7 +++ .../Scripts/Entities/Attack/IAttack.cs.meta | 11 +++++ Assets/Scripts/Entities/Attack/MeleeAttack.cs | 35 ++++++++++++++ .../Entities/Attack/MeleeAttack.cs.meta | 11 +++++ Assets/Scripts/Entities/Attack/SingleShot.cs | 48 +++++++++++++++++++ .../Entities/Attack/SingleShot.cs.meta | 11 +++++ 7 files changed, 131 insertions(+) create mode 100644 Assets/Scripts/Entities/Attack.meta create mode 100644 Assets/Scripts/Entities/Attack/IAttack.cs create mode 100644 Assets/Scripts/Entities/Attack/IAttack.cs.meta create mode 100644 Assets/Scripts/Entities/Attack/MeleeAttack.cs create mode 100644 Assets/Scripts/Entities/Attack/MeleeAttack.cs.meta create mode 100644 Assets/Scripts/Entities/Attack/SingleShot.cs create mode 100644 Assets/Scripts/Entities/Attack/SingleShot.cs.meta diff --git a/Assets/Scripts/Entities/Attack.meta b/Assets/Scripts/Entities/Attack.meta new file mode 100644 index 0000000..ae7ec88 --- /dev/null +++ b/Assets/Scripts/Entities/Attack.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad806e075b6034b4c9ceb3ae832ac6a3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Entities/Attack/IAttack.cs b/Assets/Scripts/Entities/Attack/IAttack.cs new file mode 100644 index 0000000..a060585 --- /dev/null +++ b/Assets/Scripts/Entities/Attack/IAttack.cs @@ -0,0 +1,7 @@ +namespace Assets.Scripts.Entities.Attack { + public interface IAttack { + void Attack(); + float GetRange(); + float GetCooldownTime(); + } +} diff --git a/Assets/Scripts/Entities/Attack/IAttack.cs.meta b/Assets/Scripts/Entities/Attack/IAttack.cs.meta new file mode 100644 index 0000000..0c11fa4 --- /dev/null +++ b/Assets/Scripts/Entities/Attack/IAttack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58fd06520c77b6e4683cbf37114a3062 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Entities/Attack/MeleeAttack.cs b/Assets/Scripts/Entities/Attack/MeleeAttack.cs new file mode 100644 index 0000000..0539c7c --- /dev/null +++ b/Assets/Scripts/Entities/Attack/MeleeAttack.cs @@ -0,0 +1,35 @@ +using System; +using UnityEngine; + +namespace Assets.Scripts.Entities.Attack { + [Serializable] + class MeleeAttack : IAttack { + + int damage = 12; + float cooldown = 1; + float range = 1.5f; + GameObject owner; + + public MeleeAttack(GameObject owner) { + this.owner = owner; + } + + public void Attack() { + RaycastHit2D hit = Physics2D.Raycast(owner.transform.position, owner.transform.localRotation * Vector3.up, range); + Mob m = hit.collider.gameObject.GetComponent(typeof(Mob)) as Mob; + if ( m != null && m.tag != owner.tag) { + m.InflictDamage(damage); + } + + // Todo animation? + } + + public float GetCooldownTime() { + return cooldown; + } + + public float GetRange() { + return range; + } + } +} diff --git a/Assets/Scripts/Entities/Attack/MeleeAttack.cs.meta b/Assets/Scripts/Entities/Attack/MeleeAttack.cs.meta new file mode 100644 index 0000000..08e8c83 --- /dev/null +++ b/Assets/Scripts/Entities/Attack/MeleeAttack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6320d45b19b0dac4d829864e5cc9e6d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Entities/Attack/SingleShot.cs b/Assets/Scripts/Entities/Attack/SingleShot.cs new file mode 100644 index 0000000..f835e54 --- /dev/null +++ b/Assets/Scripts/Entities/Attack/SingleShot.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Assets.Scripts.Entities.Attack { + class SingleShot : IAttack { + + int damage = 12; + float cooldown = 1; + int range = 4; + GameObject owner; + GameObject bulletPrefab; + Transform spawn; + + public SingleShot(GameObject owner) { + this.owner = owner; + } + + public void SetSpawn(Transform t) { + spawn = t; + } + + public void SetPrefab(GameObject bullet) { + this.bulletPrefab = bullet; + } + + public void Attack() { + if ( bulletPrefab == null ) + return; + Debug.Log("Instantiate Bullet"); + GameObject b = GameObject.Instantiate(bulletPrefab); + b.transform.rotation = spawn.rotation; + b.transform.position = spawn.position; + Bullet bu = b.GetComponent(); + bu.SetDamage(damage); + bu.SetOwner(owner); + + } + + public float GetCooldownTime() { + return cooldown; + } + + public float GetRange() { + return range; + } + } +} diff --git a/Assets/Scripts/Entities/Attack/SingleShot.cs.meta b/Assets/Scripts/Entities/Attack/SingleShot.cs.meta new file mode 100644 index 0000000..08376d6 --- /dev/null +++ b/Assets/Scripts/Entities/Attack/SingleShot.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49a9496d02160ac448645af09ce8540f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: