Commit 8633100d by alsunj

targetingmanager

parent cd4e334d
......@@ -42,7 +42,7 @@ ModelImporter:
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
......@@ -499,14 +499,14 @@ ModelImporter:
takeName: 2H_Ranged_Aiming
internalID: -2767709846786070005
firstFrame: 0
lastFrame: 48
lastFrame: 30
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
......@@ -591,7 +591,7 @@ ModelImporter:
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0.28687572
- time: 0.3486334
functionName: ReceiveTargetShotEventFromAnimator
data:
objectReferenceParameter: {fileID: 11500000, guid: f756dd42a94556a4489ea5f3fa82f1c2, type: 3}
......
......@@ -6,9 +6,9 @@ public class AnimatedEnemy : Enemy
protected EnemyAnimator _enemyAnimator;
protected EnemyManager _enemyManager;
protected override void InitializeEnemy()
protected override void InitializeEnemy(int detectionRange, LayerMask targetLayerMask)
{
base.InitializeEnemy();
base.InitializeEnemy(detectionRange, targetLayerMask);
_enemyManager = GetComponent<EnemyManager>();
if (_enemyManager != null)
{
......
......@@ -3,22 +3,19 @@ using UnityEngine;
public class Enemy : NetworkBehaviour
{
protected virtual void InitializeEnemy()
{
}
public void SetTarget()
{
}
public int DetectionRadius { get; set; }
public Transform Target { get; set; }
public LayerMask TargetLayerMask { get; set; }
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
protected virtual void InitializeEnemy(int detectionRange, LayerMask targetLayerMask)
{
DetectionRadius = detectionRange;
TargetLayerMask = targetLayerMask;
Target = null;
}
// Update is called once per frame
void Update()
public override void OnDestroy()
{
TargetingManager.Instance.RemoveEnemyFromTargetingList(this);
}
}
\ No newline at end of file
......@@ -4,7 +4,7 @@ using UnityEngine;
public class EnemySettings : ScriptableObject
{
public LayerMask targetLayer;
public float detectionRange = 7f;
public float shootingRange = 20f;
public int detectionRange = 7;
public int shootingRange = 20;
public float shootingDelay = 1f;
}
\ No newline at end of file
......@@ -111,6 +111,7 @@ public class EnemySpawner : MonoBehaviour
GameObject spawnedEnemy =
Instantiate(_rogueEnemyPrefab, spawnPosition, Quaternion.identity, gameObject.transform);
spawnedEnemy.GetComponent<NetworkObject>().Spawn();
TargetingManager.Instance.AddEnemyToTargetingList(spawnedEnemy.GetComponent<Enemy>());
// SpawnEnemyForClientRpc(spawnedEnemy);
}
}
......
......@@ -24,13 +24,13 @@ public class Rogue : AnimatedEnemy
{
if (IsServer)
{
InitializeEnemy();
InitializeEnemy(enemySettings.detectionRange, enemySettings.targetLayer);
}
}
protected override void InitializeEnemy()
protected override void InitializeEnemy(int detectionRange, LayerMask targetLayerMask)
{
base.InitializeEnemy();
base.InitializeEnemy(detectionRange, targetLayerMask);
if (_enemyAnimator != null)
{
_enemyAnimator.receiveTargetShotEventFromAnimator += TargetShotEvent;
......@@ -91,45 +91,50 @@ public class Rogue : AnimatedEnemy
return;
}
if (!_targetLocked)
{
ScanForCollisionServerRpc();
}
}
[ServerRpc]
private void ScanForCollisionServerRpc()
{
if (_isCrossbowLoaded && _shootingTimer <= 0)
{
int numColliders = Physics.OverlapSphereNonAlloc(transform.position, enemySettings.detectionRange,
hitColliders,
enemySettings.targetLayer);
if (numColliders > 0)
{
Collider closestCollider = null;
float closestDistance = float.MaxValue;
for (int i = 0; i < numColliders; i++)
{
float distance = Vector3.Distance(transform.position, hitColliders[i].transform.position);
if (distance < closestDistance)
{
closestDistance = distance;
closestCollider = hitColliders[i];
}
}
_targetLocked = true;
GameObject targetObject = closestCollider.gameObject;
AimAtTarget();
_lookingDirection = (targetObject.transform.position - transform.position).normalized;
if (Target)
{
RotateTowardsTarget();
}
}
// [ServerRpc]
// private void ScanForCollisionServerRpc()
// {
// if (_isCrossbowLoaded && _shootingTimer <= 0)
// {
// int numColliders = Physics.OverlapSphereNonAlloc(transform.position, enemySettings.detectionRange,
// hitColliders,
// enemySettings.targetLayer);
// if (numColliders > 0)
// {
// Collider closestCollider = null;
// float closestDistance = float.MaxValue;
//
// for (int i = 0; i < numColliders; i++)
// {
// float distance = Vector3.Distance(transform.position, hitColliders[i].transform.position);
// if (distance < closestDistance)
// {
// closestDistance = distance;
// closestCollider = hitColliders[i];
// }
// }
//
// _targetLocked = true;
// GameObject targetObject = closestCollider.gameObject;
//
// }
// }
// }
private void RotateTowardsTarget()
{
_lookingDirection = (Target.position - transform.position).normalized;
Quaternion lookRotation =
Quaternion.LookRotation(new Vector3(_lookingDirection.x, 0, _lookingDirection.z));
transform.DORotateQuaternion(lookRotation, 0.5f);
}
}
AimAtTarget();
}
private void ShootTarget()
......
using System.Collections.Generic;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.PlayerLoop;
public class TargetingManager : NetworkBehaviour
{
public static TargetingManager Instance { get; private set; }
private Collider[] playerColliders;
private List<Enemy> enemies;
1
public override void OnNetworkSpawn()
{
base.OnNetworkSpawn();
if (IsServer)
{
playerColliders = new Collider[NetworkManager.Singleton.ConnectedClients.Count];
}
}
private void Update()
{
if (IsServer)
{
SearchForPlayersInEnemyRadius();
}
}
private void SearchForPlayersInEnemyRadius()
{
foreach (var enemy in enemies)
{
if (enemy != null)
{
int numColliders = Physics.OverlapSphereNonAlloc(enemy.gameObject.transform.position,
enemy.DetectionRadius,
playerColliders, enemy.TargetLayerMask);
if (numColliders > 0)
{
for (int i = 0; i < numColliders; i++)
{
enemy.Target = playerColliders[i].gameObject.transform;
}
}
}
}
}
public void AddEnemyToTargetingList(Enemy enemy)
{
enemies.Add(enemy);
}
public void RemoveEnemyFromTargetingList(Enemy enemy)
{
enemies.Remove(enemy);
}
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: bf4038d9534513348a315635f4082a28
\ No newline at end of file
......@@ -11,10 +11,10 @@ AnimatorStateMachine:
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -3853274732491035516}
m_Position: {x: -30, y: 200, z: 0}
m_Position: {x: -300, y: 420, z: 0}
- serializedVersion: 1
m_State: {fileID: -6313296376528861971}
m_Position: {x: -30, y: 310, z: 0}
m_Position: {x: 200, y: 420, z: 0}
- serializedVersion: 1
m_State: {fileID: -3195231021192671509}
m_Position: {x: 230, y: 200, z: 0}
......@@ -42,7 +42,7 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -240672606731872282}
- {fileID: -3288482386334040245}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
......@@ -86,6 +86,31 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-3288482386334040245
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Attack
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -3195231021192671509}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-3195231021192671509
AnimatorState:
serializedVersion: 6
......@@ -97,7 +122,7 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -1041327520746502340}
- {fileID: -199171831459639508}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
......@@ -140,29 +165,7 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-1041327520746502340
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -3853274732491035516}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.4364797
m_TransitionOffset: 0
m_ExitTime: 0.8977654
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-240672606731872282
--- !u!1101 &-199171831459639508
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
......@@ -171,17 +174,17 @@ AnimatorStateTransition:
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Attack
m_ConditionEvent: Reload
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -3195231021192671509}
m_DstState: {fileID: -3117074883161603952}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.84375
m_ExitTime: 0.7413793
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
......
......@@ -32,6 +32,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4464205841933766465}
- {fileID: 7869329456827020933}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6720401888809174077
......@@ -66,14 +67,59 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4994959905079220019}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9c71552cd67eabf489fab4fe0d80a0f9, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
keyPrefab: {fileID: 8050255731901760503, guid: 1d9ae894a89fd38449f1ce889f52d1ad, type: 3}
startGame: 0
startGame: 1
--- !u!1 &8925114654448909485
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7869329456827020933}
- component: {fileID: 4653852438772366969}
m_Layer: 0
m_Name: TargetingManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7869329456827020933
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8925114654448909485}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7801895876235266027}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4653852438772366969
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8925114654448909485}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bf4038d9534513348a315635f4082a28, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
--- !u!1001 &2689894207478932745
PrefabInstance:
m_ObjectHideFlags: 0
......@@ -134,6 +180,14 @@ PrefabInstance:
propertyPath: GlobalObjectIdHash
value: 330603060
objectReference: {fileID: 0}
- target: {fileID: 2847495381736913473, guid: 97ac290fc57dc044a9e439c8e5a05a23, type: 3}
propertyPath: _rogueEnemyPrefab
value:
objectReference: {fileID: 273039182630653378, guid: 347c9a55bcfa08347bc5fb513a0e9ad4, type: 3}
- target: {fileID: 2847495381736913473, guid: 97ac290fc57dc044a9e439c8e5a05a23, type: 3}
propertyPath: _slimeEnemyPrefab
value:
objectReference: {fileID: 2899838405596494908, guid: bc02f320cbb1a9d4996b6e1fe7f10469, type: 3}
- target: {fileID: 3084693600464785736, guid: 97ac290fc57dc044a9e439c8e5a05a23, type: 3}
propertyPath: GlobalObjectIdHash
value: 2509712135
......@@ -175,7 +229,9 @@ PrefabInstance:
value: EnemySpawner
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_RemovedGameObjects:
- {fileID: 6209859709331599942, guid: 97ac290fc57dc044a9e439c8e5a05a23, type: 3}
- {fileID: 4660401221083753078, guid: 97ac290fc57dc044a9e439c8e5a05a23, type: 3}
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 97ac290fc57dc044a9e439c8e5a05a23, type: 3}
......
......@@ -814,74 +814,6 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 202725141662654280, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: _rogueEnemyPrefab
value:
objectReference: {fileID: 273039182630653378, guid: 347c9a55bcfa08347bc5fb513a0e9ad4, type: 3}
- target: {fileID: 202725141662654280, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: _slimeEnemyPrefab
value:
objectReference: {fileID: 2899838405596494908, guid: bc02f320cbb1a9d4996b6e1fe7f10469, type: 3}
- target: {fileID: 282998371085549544, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: GlobalObjectIdHash
value: 2201525822
objectReference: {fileID: 0}
- target: {fileID: 282998371085549544, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: ActiveSceneSynchronization
value: 0
objectReference: {fileID: 0}
- target: {fileID: 282998371085549544, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: InScenePlacedSourceGlobalObjectIdHash
value: 389880154
objectReference: {fileID: 0}
- target: {fileID: 541729477645154562, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: GlobalObjectIdHash
value: 2222630340
objectReference: {fileID: 0}
- target: {fileID: 541729477645154562, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: InScenePlacedSourceGlobalObjectIdHash
value: 389880154
objectReference: {fileID: 0}
- target: {fileID: 1124603564526040129, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: GlobalObjectIdHash
value: 2413355888
objectReference: {fileID: 0}
- target: {fileID: 1124603564526040129, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: InScenePlacedSourceGlobalObjectIdHash
value: 389880154
objectReference: {fileID: 0}
- target: {fileID: 1226198045086163250, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: GlobalObjectIdHash
value: 2580038812
objectReference: {fileID: 0}
- target: {fileID: 1226198045086163250, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: InScenePlacedSourceGlobalObjectIdHash
value: 389880154
objectReference: {fileID: 0}
- target: {fileID: 1544067483484776408, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: GlobalObjectIdHash
value: 1853973632
objectReference: {fileID: 0}
- target: {fileID: 1544067483484776408, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: InScenePlacedSourceGlobalObjectIdHash
value: 389880154
objectReference: {fileID: 0}
- target: {fileID: 1809229122743856241, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: GlobalObjectIdHash
value: 3328335443
objectReference: {fileID: 0}
- target: {fileID: 1809229122743856241, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: InScenePlacedSourceGlobalObjectIdHash
value: 389880154
objectReference: {fileID: 0}
- target: {fileID: 2406308509100318415, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: m_Enabled
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2406308509100318415, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: startGame
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4994959905079220019, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
propertyPath: m_Name
value: Managers
......@@ -931,9 +863,7 @@ PrefabInstance:
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects:
- {fileID: 8320881926375331663, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
- {fileID: 7348043562708619135, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c3c6003d148e24045a5699c460b258c9, type: 3}
......
......@@ -16,5 +16,5 @@ MonoBehaviour:
serializedVersion: 2
m_Bits: 512
detectionRange: 7
shootingRange: 20
shootingDelay: 4
shootingRange: 15
shootingDelay: 5
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment