Added Turret targeting

This commit is contained in:
Stedd 2022-10-01 18:17:16 +02:00
parent f89ab59fdf
commit 47fdfdbc66
4 changed files with 192 additions and 63 deletions

View File

@ -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}

View File

@ -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;
@ -31,10 +31,6 @@ namespace AsteroidGame.Entities
ClosestEnemy,
LowestHealth
};
[SerializeField] private Transform[] _buildingParts;
#endregion
#region Publics
@ -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);
// ShootProjectile(true);
// }
// }
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);
}
}
}
}

View File

@ -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: []

View File

@ -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