Attack package
2 simple attack types IAttack interface
This commit is contained in:
parent
75917b6e17
commit
f03c0f4469
7 changed files with 131 additions and 0 deletions
8
Assets/Scripts/Entities/Attack.meta
Normal file
8
Assets/Scripts/Entities/Attack.meta
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ad806e075b6034b4c9ceb3ae832ac6a3
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
7
Assets/Scripts/Entities/Attack/IAttack.cs
Normal file
7
Assets/Scripts/Entities/Attack/IAttack.cs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
namespace Assets.Scripts.Entities.Attack {
|
||||||
|
public interface IAttack {
|
||||||
|
void Attack();
|
||||||
|
float GetRange();
|
||||||
|
float GetCooldownTime();
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Scripts/Entities/Attack/IAttack.cs.meta
Normal file
11
Assets/Scripts/Entities/Attack/IAttack.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 58fd06520c77b6e4683cbf37114a3062
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
35
Assets/Scripts/Entities/Attack/MeleeAttack.cs
Normal file
35
Assets/Scripts/Entities/Attack/MeleeAttack.cs
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Scripts/Entities/Attack/MeleeAttack.cs.meta
Normal file
11
Assets/Scripts/Entities/Attack/MeleeAttack.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6320d45b19b0dac4d829864e5cc9e6d9
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
48
Assets/Scripts/Entities/Attack/SingleShot.cs
Normal file
48
Assets/Scripts/Entities/Attack/SingleShot.cs
Normal file
|
@ -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<Bullet>();
|
||||||
|
bu.SetDamage(damage);
|
||||||
|
bu.SetOwner(owner);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetCooldownTime() {
|
||||||
|
return cooldown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetRange() {
|
||||||
|
return range;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Scripts/Entities/Attack/SingleShot.cs.meta
Normal file
11
Assets/Scripts/Entities/Attack/SingleShot.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 49a9496d02160ac448645af09ce8540f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Loading…
Add table
Reference in a new issue