Added Turret targeting
This commit is contained in:
parent
f89ab59fdf
commit
47fdfdbc66
|
@ -406,7 +406,7 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: a8e2a3a5a069cea4cbe59c093201d8dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_health: 0
|
||||
_health: 10
|
||||
_maxHealth: 0
|
||||
_isInvulnerable: 0
|
||||
_centerPosition: {fileID: 3291032053430181389}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
using System;
|
||||
using AsteroidGame.Entities.Enemies.Scripts;
|
||||
using UnityEngine;
|
||||
|
||||
|
@ -14,14 +15,13 @@ namespace AsteroidGame.Entities
|
|||
[SerializeField] private TargetStrategy _targetStrategy = TargetStrategy.LowestHealth;
|
||||
|
||||
[Header("Stats")]
|
||||
[SerializeField]
|
||||
private float _score = 0f;
|
||||
[SerializeField] private float _kills = 0f;
|
||||
[SerializeField] private float _damageDealt = 0f;
|
||||
|
||||
[Header("RigConnections")]
|
||||
[SerializeField] private Transform _turretHead;
|
||||
[SerializeField] private Transform _barrel;
|
||||
|
||||
#region Privates
|
||||
[Header("Target")]
|
||||
[SerializeField] private SEnemyBaseRuntimeSet _activeEnemies;
|
||||
[SerializeField] private EnemyBase _targetEnemy;
|
||||
|
@ -32,10 +32,6 @@ namespace AsteroidGame.Entities
|
|||
LowestHealth
|
||||
};
|
||||
|
||||
[SerializeField] private Transform[] _buildingParts;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Publics
|
||||
|
||||
public float MaxDistance { get; set; }
|
||||
|
@ -50,11 +46,6 @@ namespace AsteroidGame.Entities
|
|||
|
||||
#endregion
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_targetEnemy = FindObjectOfType<EnemyBase>();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// enemyHandler = FindObjectOfType<EnemyHandler>();
|
||||
|
@ -64,7 +55,7 @@ namespace AsteroidGame.Entities
|
|||
|
||||
private void Update()
|
||||
{
|
||||
_turretHead.transform.LookAt(_targetEnemy.GetCenterPosition());
|
||||
FindEnemyTarget();
|
||||
}
|
||||
|
||||
private void UpdateWeaponParameters(float fireRate, float projectileSpeed)
|
||||
|
@ -78,49 +69,57 @@ namespace AsteroidGame.Entities
|
|||
|
||||
// Update is called once per frame
|
||||
|
||||
// private void FindAndShootEnemy()
|
||||
// {
|
||||
// float bestValue = Mathf.Infinity;
|
||||
// bool targetFound = false;
|
||||
// List<GameObject> enemies = enemyHandler.ReturnAllEnemies();
|
||||
//
|
||||
// foreach (GameObject enemy in enemies)
|
||||
// {
|
||||
// float distanceToTarget = Vector3.Magnitude(enemy.transform.position - transform.position);
|
||||
//
|
||||
// bool withinRange = distanceToTarget < weaponRange;
|
||||
// if (withinRange)
|
||||
// {
|
||||
// if (targetStrategy == TargetStrategy.ClosestEnemy)
|
||||
// {
|
||||
// bool isClosest = distanceToTarget < bestValue;
|
||||
// if (isClosest)
|
||||
// {
|
||||
// targetFound = true;
|
||||
// bestValue = distanceToTarget;
|
||||
// targetEnemy = enemy;
|
||||
// }
|
||||
// }
|
||||
// if (targetStrategy == TargetStrategy.LowestHealth)
|
||||
// {
|
||||
// float enemyHealth = enemy.GetComponent<EnemyHealth>().Health;
|
||||
//
|
||||
// bool isLowestHealth = enemyHealth < bestValue;
|
||||
// if (isLowestHealth)
|
||||
// {
|
||||
// targetFound = true;
|
||||
// bestValue = enemyHealth;
|
||||
// targetEnemy = enemy;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (targetFound)
|
||||
// {
|
||||
// weapon.transform.LookAt(targetEnemy.transform.position);
|
||||
private void FindEnemyTarget()
|
||||
{
|
||||
float currentBestValue = Mathf.Infinity;
|
||||
var targetFound = false;
|
||||
|
||||
foreach (EnemyBase enemy in _activeEnemies._list)
|
||||
{
|
||||
float distanceToTarget = Vector3.Magnitude(enemy.GetCenterPosition() - GetCenterPosition());
|
||||
|
||||
bool withinRange = distanceToTarget < _weaponRange;
|
||||
if (withinRange)
|
||||
{
|
||||
switch (_targetStrategy)
|
||||
{
|
||||
case TargetStrategy.ClosestEnemy:
|
||||
{
|
||||
bool isClosest = distanceToTarget < currentBestValue;
|
||||
if (isClosest)
|
||||
{
|
||||
targetFound = true;
|
||||
currentBestValue = distanceToTarget;
|
||||
_targetEnemy = enemy;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case TargetStrategy.LowestHealth:
|
||||
{
|
||||
float enemyHealth = enemy.GetHealth();
|
||||
|
||||
bool isLowestHealth = enemyHealth < currentBestValue;
|
||||
if (isLowestHealth)
|
||||
{
|
||||
targetFound = true;
|
||||
currentBestValue = enemyHealth;
|
||||
_targetEnemy = enemy;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (targetFound)
|
||||
{
|
||||
_turretHead.transform.LookAt(_targetEnemy.GetCenterPosition());
|
||||
// ShootProjectile(true);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -757,14 +757,14 @@ MonoBehaviour:
|
|||
_maxPower: 10
|
||||
_currentPower: 0
|
||||
_structureBaseSet: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2}
|
||||
_weaponRange: 40
|
||||
_weaponRange: 10
|
||||
_damage: 1
|
||||
_fireRate: 1
|
||||
_projectileSpeed: 5
|
||||
_targetStrategy: 1
|
||||
_score: 0
|
||||
_kills: 0
|
||||
_damageDealt: 0
|
||||
_turretHead: {fileID: 5103935544653627402}
|
||||
_barrel: {fileID: 5103935545559248087}
|
||||
_activeEnemies: {fileID: 11400000, guid: 5f6dc84d75dbd9a459e519de42279066, type: 2}
|
||||
_targetEnemy: {fileID: 0}
|
||||
_buildingParts: []
|
||||
|
|
|
@ -266,6 +266,8 @@ Transform:
|
|||
- {fileID: 2079460687}
|
||||
- {fileID: 1715656626}
|
||||
- {fileID: 991542217}
|
||||
- {fileID: 1421503444}
|
||||
- {fileID: 1494435109}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 5
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
|
@ -391,6 +393,134 @@ PrefabInstance:
|
|||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3}
|
||||
--- !u!1001 &1421503443
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 157782261}
|
||||
m_Modifications:
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 5.96
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: -0.98203504
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -1.35
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5599539567497807159, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Enemy (1)
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
--- !u!4 &1421503444 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
m_PrefabInstance: {fileID: 1421503443}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &1494435108
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 157782261}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1411216412654489461, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: _health
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 4
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 4.51
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: -0.98203504
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 1.03
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5599539567497807159, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Enemy (2)
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
--- !u!4 &1494435109 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
m_PrefabInstance: {fileID: 1494435108}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &1715656625
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -404,7 +534,7 @@ PrefabInstance:
|
|||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -0.3173442
|
||||
value: -6.3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
|
@ -412,7 +542,7 @@ PrefabInstance:
|
|||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0.039061546
|
||||
value: 11.95
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
|
|
Loading…
Reference in New Issue