Enemy and weapon update
Added IDamageable interface Added Enemy health Added Weapon damage Added simple Muzzle flash Fixed gizmo bug in enemy
This commit is contained in:
parent
2a5aaca576
commit
572ff7f8cb
|
@ -73,8 +73,11 @@ public class EnemyAI : MonoBehaviour
|
||||||
{
|
{
|
||||||
Gizmos.color = Color.red;
|
Gizmos.color = Color.red;
|
||||||
Gizmos.DrawWireSphere(transform.position, detectRange);
|
Gizmos.DrawWireSphere(transform.position, detectRange);
|
||||||
|
if (navMeshAgent != null)
|
||||||
|
{
|
||||||
Gizmos.color = Color.blue;
|
Gizmos.color = Color.blue;
|
||||||
Gizmos.DrawWireSphere(transform.position, navMeshAgent.stoppingDistance);
|
Gizmos.DrawWireSphere(transform.position, navMeshAgent.stoppingDistance);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
||||||
|
public class EnemyHealth : MonoBehaviour, IDamageable
|
||||||
|
{
|
||||||
|
[SerializeField] float _maxHealth = 100f;
|
||||||
|
[SerializeField] float _health ;
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
_health = _maxHealth;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (_health <= 0)
|
||||||
|
{
|
||||||
|
print("Ded");
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ModifyHealth(float _healthChange)
|
||||||
|
{
|
||||||
|
_health += _healthChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetHealth(float newHealth)
|
||||||
|
{
|
||||||
|
_health = newHealth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetMaxHealth(float newHealth)
|
||||||
|
{
|
||||||
|
_maxHealth = newHealth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetHealth()
|
||||||
|
{
|
||||||
|
return _health;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetMaxHealth()
|
||||||
|
{
|
||||||
|
return _maxHealth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetHealthFactor()
|
||||||
|
{
|
||||||
|
return _health / _maxHealth;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dd51d97cd02a30c46a87b8f90059abab
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,18 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
interface IDamageable
|
||||||
|
{
|
||||||
|
public void ModifyHealth(float _healthChange);
|
||||||
|
|
||||||
|
public void SetHealth(float newHealth);
|
||||||
|
|
||||||
|
public void SetMaxHealth(float newHealth);
|
||||||
|
|
||||||
|
public float GetHealth();
|
||||||
|
|
||||||
|
public float GetMaxHealth();
|
||||||
|
|
||||||
|
public float GetHealthFactor();
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d0290b6d2e8462547a0d40b67a1076e3
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -258,23 +258,6 @@ Transform:
|
||||||
m_CorrespondingSourceObject: {fileID: 400000, guid: 5d2e4237b4429b34fae4c9eb3cd9efd5, type: 3}
|
m_CorrespondingSourceObject: {fileID: 400000, guid: 5d2e4237b4429b34fae4c9eb3cd9efd5, type: 3}
|
||||||
m_PrefabInstance: {fileID: 101430667}
|
m_PrefabInstance: {fileID: 101430667}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!1 &191840518 stripped
|
|
||||||
GameObject:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 6326861089322885425, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8204767108263278737}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!114 &191840520
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 191840518}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 01ef216392c8f33409f2efcd91f4e510, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
--- !u!1001 &195553424
|
--- !u!1001 &195553424
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -548,6 +531,25 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 520203987}
|
m_GameObject: {fileID: 520203987}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!1 &527013396 stripped
|
||||||
|
GameObject:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 1314956764262545219, guid: 3a896632310e02b468121bf09411f87e, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 3924901602849055293}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!114 &527013401
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 527013396}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dd51d97cd02a30c46a87b8f90059abab, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_maxHealth: 100
|
||||||
|
_health: 0
|
||||||
--- !u!1001 &529879792
|
--- !u!1001 &529879792
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -2550,6 +2552,10 @@ PrefabInstance:
|
||||||
propertyPath: reloadAction.m_Name
|
propertyPath: reloadAction.m_Name
|
||||||
value: Reload
|
value: Reload
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5428686084875064986, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: MuzzleFlash
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 7060812621224890882, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3}
|
- target: {fileID: 7060812621224890882, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3}
|
||||||
propertyPath: fireAction.m_Id
|
propertyPath: fireAction.m_Id
|
||||||
value: 974fe4ce-65be-4370-b772-71ca6290711e
|
value: 974fe4ce-65be-4370-b772-71ca6290711e
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -7,11 +7,14 @@ using UnityEngine.InputSystem;
|
||||||
public class Weapon : MonoBehaviour
|
public class Weapon : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField] Camera _FpCamera;
|
[SerializeField] Camera _FpCamera;
|
||||||
|
[SerializeField] ParticleSystem _MuzzleFlash;
|
||||||
[SerializeField] float _range = 100f;
|
[SerializeField] float _range = 100f;
|
||||||
|
[SerializeField] float _weaponDamage = 25f;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
_FpCamera = FindObjectOfType<Camera>();
|
_FpCamera = FindObjectOfType<Camera>();
|
||||||
|
_MuzzleFlash = GetComponentInChildren<ParticleSystem>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnFire()
|
public void OnFire()
|
||||||
|
@ -27,8 +30,30 @@ public class Weapon : MonoBehaviour
|
||||||
|
|
||||||
private void Shoot()
|
private void Shoot()
|
||||||
{
|
{
|
||||||
Physics.Raycast(_FpCamera.transform.position, _FpCamera.transform.forward, out RaycastHit hit, _range);
|
Animation();
|
||||||
|
ProcessHit();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Animation()
|
||||||
|
{
|
||||||
|
_MuzzleFlash.Play();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessHit()
|
||||||
|
{
|
||||||
|
if (Physics.Raycast(_FpCamera.transform.position, _FpCamera.transform.forward, out RaycastHit hit, _range))
|
||||||
|
{
|
||||||
print($"{hit.transform.name} was hit!");
|
print($"{hit.transform.name} was hit!");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hit.transform.GetComponent<IDamageable>() != null)
|
||||||
|
{
|
||||||
|
hit.transform.GetComponent<IDamageable>().ModifyHealth(-_weaponDamage);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue