diff --git a/Assets/Entities/Enemies/Enemy.prefab b/Assets/Entities/Enemies/Enemy.prefab index d35f538..afdef29 100644 --- a/Assets/Entities/Enemies/Enemy.prefab +++ b/Assets/Entities/Enemies/Enemy.prefab @@ -413,7 +413,11 @@ MonoBehaviour: _basePosition: {fileID: 2692714622321691895} _uiFriendlyName: Enemy _entityBaseSet: {fileID: 11400000, guid: c5542e77624472441a67b1f34e19a116, type: 2} - _enemyBaseSet: {fileID: 11400000, guid: 5f6dc84d75dbd9a459e519de42279066, type: 2} + _enemyBaseSet: {fileID: 11400000, guid: e5f25127d92be074aac6e7b745fae107, type: 2} + _targeterConfig: {fileID: 11400000, guid: d5813a38da3962d4498fc71ef33361b6, type: 2} + _targeter: {fileID: 0} + _target: {fileID: 0} + _navMeshAgent: {fileID: 0} --- !u!1 &6940800288144322101 GameObject: m_ObjectHideFlags: 0 @@ -437,7 +441,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6940800288144322101} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} m_LocalPosition: {x: 0, y: 2.01, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 diff --git a/Assets/Entities/Enemies/EnemyTargeterConfiguration.asset b/Assets/Entities/Enemies/EnemyTargeterConfiguration.asset new file mode 100644 index 0000000..92129b5 --- /dev/null +++ b/Assets/Entities/Enemies/EnemyTargeterConfiguration.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02781660543c12d4ebddaf334eb0d730, type: 3} + m_Name: EnemyTargeterConfiguration + m_EditorClassIdentifier: + _range: 0 + _selectedTargetStrategy: 0 + _activeEntities: {fileID: 0} diff --git a/Assets/Entities/RuntimeSet/ActiveEnemies.asset.meta b/Assets/Entities/Enemies/EnemyTargeterConfiguration.asset.meta similarity index 79% rename from Assets/Entities/RuntimeSet/ActiveEnemies.asset.meta rename to Assets/Entities/Enemies/EnemyTargeterConfiguration.asset.meta index eae21c2..ab514ec 100644 --- a/Assets/Entities/RuntimeSet/ActiveEnemies.asset.meta +++ b/Assets/Entities/Enemies/EnemyTargeterConfiguration.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5f6dc84d75dbd9a459e519de42279066 +guid: d5813a38da3962d4498fc71ef33361b6 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Entities/Enemies/Scripts/EnemyBase.cs b/Assets/Entities/Enemies/Scripts/EnemyBase.cs index eefb416..e6fdd79 100644 --- a/Assets/Entities/Enemies/Scripts/EnemyBase.cs +++ b/Assets/Entities/Enemies/Scripts/EnemyBase.cs @@ -1,15 +1,40 @@ +using System; using UnityEngine; +using UnityEngine.AI; namespace AsteroidGame.Entities { public class EnemyBase : EntityBase { - [SerializeField] private SEnemyBaseRuntimeSet _enemyBaseSet; + [SerializeField] private SEntityBaseRuntimeSet _enemyBaseSet; + + [Header("Targeter")] + [SerializeField] private STargeterConfig _targeterConfig; + [SerializeField] private Targeter _targeter; + [SerializeField] private EntityBase _target; + + [Header("NavMeshAgent")] + [SerializeField] private NavMeshAgent _navMeshAgent; protected override void OnEnable() { base.OnEnable(); _enemyBaseSet.Add(this); + InitializeTargeter(); + InitializeNavMeshAgent(); + } + + private void InitializeNavMeshAgent() + { + _navMeshAgent = gameObject.AddComponent(); + _navMeshAgent.speed = 0.1f; + } + + private void InitializeTargeter() + { + _targeter = gameObject.AddComponent(); + _targeter.SetParent(this); + _targeter.SetConfig(_targeterConfig); } protected override void OnDisable() @@ -17,5 +42,14 @@ namespace AsteroidGame.Entities base.OnDisable(); _enemyBaseSet.Remove(this); } + + private void Update() + { + if (_targeter.FoundTarget()) + { + _target = _targeter.GetTarget(); + _navMeshAgent.SetDestination(_target.GetBasePosition()); + } + } } } \ No newline at end of file diff --git a/Assets/Entities/RuntimeSet/ActiveEnemies.asset b/Assets/Entities/RuntimeSet/ActiveEnemyEntities.asset similarity index 73% rename from Assets/Entities/RuntimeSet/ActiveEnemies.asset rename to Assets/Entities/RuntimeSet/ActiveEnemyEntities.asset index 44a21e5..4a341a8 100644 --- a/Assets/Entities/RuntimeSet/ActiveEnemies.asset +++ b/Assets/Entities/RuntimeSet/ActiveEnemyEntities.asset @@ -9,7 +9,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 33f48df2d03212c4986fe2c47c5de796, type: 3} - m_Name: ActiveEnemies + m_Script: {fileID: 11500000, guid: 9da2d6a0206101c47a22881a0ba2ece2, type: 3} + m_Name: ActiveEnemyEntities m_EditorClassIdentifier: _list: [] diff --git a/Assets/Entities/RuntimeSet/ActiveStructures.asset.meta b/Assets/Entities/RuntimeSet/ActiveEnemyEntities.asset.meta similarity index 79% rename from Assets/Entities/RuntimeSet/ActiveStructures.asset.meta rename to Assets/Entities/RuntimeSet/ActiveEnemyEntities.asset.meta index 96c0c99..05f995a 100644 --- a/Assets/Entities/RuntimeSet/ActiveStructures.asset.meta +++ b/Assets/Entities/RuntimeSet/ActiveEnemyEntities.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bccdf438a1004a444bc24492728d6fbd +guid: e5f25127d92be074aac6e7b745fae107 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Entities/RuntimeSet/ActiveStructures.asset b/Assets/Entities/RuntimeSet/ActiveStructureEntities.asset similarity index 73% rename from Assets/Entities/RuntimeSet/ActiveStructures.asset rename to Assets/Entities/RuntimeSet/ActiveStructureEntities.asset index 1d21fdd..7ef2ebd 100644 --- a/Assets/Entities/RuntimeSet/ActiveStructures.asset +++ b/Assets/Entities/RuntimeSet/ActiveStructureEntities.asset @@ -9,7 +9,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fbc6f67c9903cc8448f793da64d840cf, type: 3} - m_Name: ActiveStructures + m_Script: {fileID: 11500000, guid: 9da2d6a0206101c47a22881a0ba2ece2, type: 3} + m_Name: ActiveStructureEntities m_EditorClassIdentifier: _list: [] diff --git a/Assets/Entities/RuntimeSet/ActiveStructureEntities.asset.meta b/Assets/Entities/RuntimeSet/ActiveStructureEntities.asset.meta new file mode 100644 index 0000000..904adc8 --- /dev/null +++ b/Assets/Entities/RuntimeSet/ActiveStructureEntities.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1925957d2bc2f0c4a9210131f2d2c4e5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/ScriptableObjects/STargeterConfig.cs b/Assets/Entities/ScriptableObjects/STargeterConfig.cs new file mode 100644 index 0000000..461c31f --- /dev/null +++ b/Assets/Entities/ScriptableObjects/STargeterConfig.cs @@ -0,0 +1,18 @@ +using AsteroidGame.Interfaces; +using UnityEngine; + +namespace AsteroidGame.Entities +{ + [CreateAssetMenu(fileName = "newTargeterConfiguration", menuName = "Configuration/Targeter")] + public class STargeterConfig : ScriptableObject + { + public float _range; + public TargetStrategy _selectedTargetStrategy; + public SEntityBaseRuntimeSet _activeEntities; + public enum TargetStrategy + { + LowestRange, + LowestHealth + }; + } +} \ No newline at end of file diff --git a/Assets/Entities/ScriptableObjects/STargeterConfig.cs.meta b/Assets/Entities/ScriptableObjects/STargeterConfig.cs.meta new file mode 100644 index 0000000..5c2f0bb --- /dev/null +++ b/Assets/Entities/ScriptableObjects/STargeterConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 02781660543c12d4ebddaf334eb0d730 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab b/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab index a56e5fc..05a48e5 100644 --- a/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab +++ b/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab @@ -60,7 +60,7 @@ MonoBehaviour: _isConsumer: 0 _maxPower: 100 _currentPower: 0 - _structureBaseSet: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} + _structureBaseSet: {fileID: 11400000, guid: 1925957d2bc2f0c4a9210131f2d2c4e5, type: 2} --- !u!1 &1863277996181035512 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Entities/Structures/Scripts/StructureBase.cs b/Assets/Entities/Structures/Scripts/StructureBase.cs index 9552528..a55c5af 100644 --- a/Assets/Entities/Structures/Scripts/StructureBase.cs +++ b/Assets/Entities/Structures/Scripts/StructureBase.cs @@ -18,7 +18,7 @@ namespace AsteroidGame.Entities [SerializeField] protected int _currentPower; [Header("Configuration")] - [SerializeField] private SStructureBaseRuntimeSet _structureBaseSet; + [SerializeField] private SEntityBaseRuntimeSet _structureBaseSet; #region Private diff --git a/Assets/Entities/Structures/StructureDisabler.prefab b/Assets/Entities/Structures/StructureDisabler.prefab new file mode 100644 index 0000000..16626d8 --- /dev/null +++ b/Assets/Entities/Structures/StructureDisabler.prefab @@ -0,0 +1,47 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2187298781219062666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2187298781219062668} + - component: {fileID: 2187298781219062669} + m_Layer: 0 + m_Name: StructureDisabler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2187298781219062668 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2187298781219062666} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.8230318, y: 5.3787107, z: -4.0428505} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2187298781219062669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2187298781219062666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f60f8a4b6b214b04083229f46bf1170b, type: 3} + m_Name: + m_EditorClassIdentifier: + _set: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} diff --git a/Assets/Entities/Structures/StructureDisabler.prefab.meta b/Assets/Entities/Structures/StructureDisabler.prefab.meta new file mode 100644 index 0000000..015938f --- /dev/null +++ b/Assets/Entities/Structures/StructureDisabler.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 14893e62c82e47e4d886fdac849f9302 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/Structures/Turret/Turret.cs b/Assets/Entities/Structures/Turret/Turret.cs index 4f28fae..bd57a4c 100644 --- a/Assets/Entities/Structures/Turret/Turret.cs +++ b/Assets/Entities/Structures/Turret/Turret.cs @@ -6,13 +6,10 @@ namespace AsteroidGame.Entities { public class Turret : StructureBase { - [Header("WeaponParameters")] [SerializeField] - private float _weaponRange = 40f; - + [Header("WeaponParameters")] [SerializeField] private int _damage = 1; [SerializeField] private float _fireRate = 1; [SerializeField] private float _projectileSpeed = 5; - [SerializeField] private TargetStrategy _targetStrategy = TargetStrategy.LowestHealth; [Header("Stats")] [SerializeField] private float _kills = 0f; @@ -22,103 +19,40 @@ namespace AsteroidGame.Entities [SerializeField] private Transform _turretHead; [SerializeField] private Transform _barrel; - [Header("Target")] - [SerializeField] private SEnemyBaseRuntimeSet _activeEnemies; - [SerializeField] private EnemyBase _targetEnemy; - - [SerializeField] private enum TargetStrategy - { - ClosestEnemy, - LowestHealth - }; + [Header("Targeter")] + [SerializeField] private STargeterConfig _targeterConfig; + [SerializeField] private Targeter _targeter; + [SerializeField] private EntityBase _target; #region Publics - public float MaxDistance { get; set; } - public int Damage { get => _damage; set => _damage = value; } - public int FireRate { get; set; } - #endregion - private void Start() + protected override void OnEnable() { - // enemyHandler = FindObjectOfType(); - // scoreHandler = FindObjectOfType(); - UpdateWeaponParameters(_fireRate, _projectileSpeed); + base.OnEnable(); + InitializeTargeter(); + } + + private void InitializeTargeter() + { + _targeter = gameObject.AddComponent(); + _targeter.SetParent(this); + _targeter.SetConfig(_targeterConfig); } private void Update() { - FindEnemyTarget(); - } - - private void UpdateWeaponParameters(float fireRate, float projectileSpeed) - { - // var main = _projectile.main; - // main.startSpeed = _projectileSpeed; - // - // var emission = _projectile.emission; - // emission.rateOverTime = _fireRate; - } - - // Update is called once per frame - - private void FindEnemyTarget() - { - float currentBestValue = Mathf.Infinity; - var targetFound = false; - - foreach (EnemyBase enemy in _activeEnemies._list) + if (_targeter.FoundTarget()) { - 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); + _target = _targeter.GetTarget(); + _turretHead.transform.LookAt(_target.GetCenterPosition()); } } } diff --git a/Assets/Entities/Structures/Turret/Turret.prefab b/Assets/Entities/Structures/Turret/Turret.prefab index 930a503..0132361 100644 --- a/Assets/Entities/Structures/Turret/Turret.prefab +++ b/Assets/Entities/Structures/Turret/Turret.prefab @@ -756,15 +756,15 @@ MonoBehaviour: _isConsumer: 1 _maxPower: 10 _currentPower: 0 - _structureBaseSet: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} + _structureBaseSet: {fileID: 11400000, guid: 1925957d2bc2f0c4a9210131f2d2c4e5, type: 2} _weaponRange: 10 _damage: 1 _fireRate: 1 _projectileSpeed: 5 - _targetStrategy: 1 _kills: 0 _damageDealt: 0 _turretHead: {fileID: 5103935544653627402} _barrel: {fileID: 5103935545559248087} - _activeEnemies: {fileID: 11400000, guid: 5f6dc84d75dbd9a459e519de42279066, type: 2} + _targeterConfig: {fileID: 11400000, guid: 9df40bc219ab8f04cb4e86558bc0df86, type: 2} + _targeter: {fileID: 0} _targetEnemy: {fileID: 0} diff --git a/Assets/Entities/Structures/Turret/TurretStandardTargeterConfiguration.asset b/Assets/Entities/Structures/Turret/TurretStandardTargeterConfiguration.asset new file mode 100644 index 0000000..e30cd39 --- /dev/null +++ b/Assets/Entities/Structures/Turret/TurretStandardTargeterConfiguration.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02781660543c12d4ebddaf334eb0d730, type: 3} + m_Name: TurretStandardTargeterConfiguration + m_EditorClassIdentifier: + _range: 15 + _selectedTargetStrategy: 0 + _activeEntities: {fileID: 11400000, guid: e5f25127d92be074aac6e7b745fae107, type: 2} diff --git a/Assets/Entities/Structures/Turret/TurretStandardTargeterConfiguration.asset.meta b/Assets/Entities/Structures/Turret/TurretStandardTargeterConfiguration.asset.meta new file mode 100644 index 0000000..6375311 --- /dev/null +++ b/Assets/Entities/Structures/Turret/TurretStandardTargeterConfiguration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9df40bc219ab8f04cb4e86558bc0df86 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/Targeter.cs b/Assets/Entities/Targeter.cs new file mode 100644 index 0000000..2885c8d --- /dev/null +++ b/Assets/Entities/Targeter.cs @@ -0,0 +1,75 @@ +using UnityEngine; + +namespace AsteroidGame.Entities +{ + public class Targeter : MonoBehaviour + { + [SerializeField] private float _range; + [SerializeField] private STargeterConfig.TargetStrategy _targetStrategy; + [SerializeField] private SEntityBaseRuntimeSet _activeEntities; + [SerializeField] private EntityBase _targeterParent; + [SerializeField] private EntityBase _targetEntity; + + public void SetParent(EntityBase newParent) => _targeterParent = newParent; + + public void SetConfig(STargeterConfig config) + { + _range = config._range; + _targetStrategy = config._selectedTargetStrategy; + _activeEntities = config._activeEntities; + } + + public EntityBase GetTarget() + { + return _targetEntity; + } + + public bool FoundTarget() + { + float currentBestValue = Mathf.Infinity; + var targetFound = false; + + foreach (EntityBase targetEntity in _activeEntities._list) + { + float distanceToTarget = + Vector3.Magnitude(targetEntity.GetCenterPosition() - _targeterParent.GetCenterPosition()); + + bool withinRange = distanceToTarget < _range; + if (withinRange) + { + switch (_targetStrategy) + { + case STargeterConfig.TargetStrategy.LowestRange: + { + bool isClosest = distanceToTarget < currentBestValue; + if (isClosest) + { + targetFound = true; + currentBestValue = distanceToTarget; + _targetEntity = targetEntity; + } + + break; + } + case STargeterConfig.TargetStrategy.LowestHealth: + { + float enemyHealth = targetEntity.GetHealth(); + + bool isLowestHealth = enemyHealth < currentBestValue; + if (isLowestHealth) + { + targetFound = true; + currentBestValue = enemyHealth; + _targetEntity = targetEntity; + } + + break; + } + } + } + } + + return targetFound; + } + } +} \ No newline at end of file diff --git a/Assets/Entities/Targeter.cs.meta b/Assets/Entities/Targeter.cs.meta new file mode 100644 index 0000000..c6802f6 --- /dev/null +++ b/Assets/Entities/Targeter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28bcd65de1e3cf744a3ac9b53c030319 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ScriptableObjects.meta b/Assets/Scenes/Playground 1.meta similarity index 77% rename from Assets/Scripts/ScriptableObjects.meta rename to Assets/Scenes/Playground 1.meta index de84a41..c92ce6b 100644 --- a/Assets/Scripts/ScriptableObjects.meta +++ b/Assets/Scenes/Playground 1.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 624b0cf4f0dd38a459121c046c909786 +guid: c3359f2750b233549861a0b0a52b3224 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scenes/Playground 1.unity b/Assets/Scenes/Playground 1.unity index 283531a..4802c2e 100644 --- a/Assets/Scenes/Playground 1.unity +++ b/Assets/Scenes/Playground 1.unity @@ -122,7 +122,7 @@ NavMeshSettings: preserveTilesOutsideBounds: 0 debug: m_Flags: 0 - m_NavMeshData: {fileID: 0} + m_NavMeshData: {fileID: 23800000, guid: b015bab8bed002c438c2a5abb0deec18, type: 2} --- !u!1 &38176945 GameObject: m_ObjectHideFlags: 0 @@ -271,56 +271,16 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &208658293 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5599539567497807159, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} + m_PrefabInstance: {fileID: 1715656625} + m_PrefabAsset: {fileID: 0} --- !u!4 &624469242 stripped Transform: m_CorrespondingSourceObject: {fileID: 5263199550015624126, guid: 2e352ad6389b4234083764d15d4e6a5f, type: 3} m_PrefabInstance: {fileID: 5263199549561108292} m_PrefabAsset: {fileID: 0} ---- !u!1 &732841883 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 732841885} - - component: {fileID: 732841884} - m_Layer: 0 - m_Name: Disabler - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &732841884 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 732841883} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f60f8a4b6b214b04083229f46bf1170b, type: 3} - m_Name: - m_EditorClassIdentifier: - _set: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} ---- !u!4 &732841885 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 732841883} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.8230318, y: 5.3787107, z: -4.0428505} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &991542217 stripped Transform: m_CorrespondingSourceObject: {fileID: 493861824998956378, guid: 57a75520298c47140a928041b05d7f3c, type: 3} @@ -331,6 +291,103 @@ Transform: m_CorrespondingSourceObject: {fileID: 5200388201450229074, guid: 07826307af1971948b98dd42d1e9457a, type: 3} m_PrefabInstance: {fileID: 5200388200885062254} m_PrefabAsset: {fileID: 0} +--- !u!1 &1089364665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1089364666} + - component: {fileID: 1089364669} + - component: {fileID: 1089364668} + - component: {fileID: 1089364667} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 2147483647 + m_IsActive: 1 +--- !u!4 &1089364666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1089364665} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -11.3755, y: 1.3935, z: 3.9827} + m_LocalScale: {x: 6.1543775, y: 3.7869, z: 5.7455} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1702078697} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1089364667 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1089364665} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1089364668 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1089364665} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 73c176f402d2c2f4d929aa5da7585d17, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1089364669 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1089364665} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &1158682046 stripped Transform: m_CorrespondingSourceObject: {fileID: 664620742648054780, guid: 3a89f87af6ee84a459d98a4c296dd1be, type: 3} @@ -393,6 +450,104 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} +--- !u!1 &1402420031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1402420032} + - component: {fileID: 1402420035} + - component: {fileID: 1402420034} + - component: {fileID: 1402420033} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 2147483647 + m_IsActive: 1 +--- !u!4 &1402420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402420031} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 5.32, y: 5.32, z: 5.32} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1702078697} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &1402420033 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402420031} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1402420034 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402420031} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 73c176f402d2c2f4d929aa5da7585d17, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1402420035 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402420031} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &1421503443 PrefabInstance: m_ObjectHideFlags: 0 @@ -521,6 +676,39 @@ Transform: m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} m_PrefabInstance: {fileID: 1494435108} m_PrefabAsset: {fileID: 0} +--- !u!1 &1702078696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1702078697} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1702078697 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1702078696} + 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: + - {fileID: 1402420032} + - {fileID: 1089364666} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1715656625 PrefabInstance: m_ObjectHideFlags: 0 @@ -528,13 +716,17 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 157782261} m_Modifications: + - target: {fileID: 1411216412654489461, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} + propertyPath: _entityBaseSet + value: + objectReference: {fileID: 11400000, guid: e5f25127d92be074aac6e7b745fae107, type: 2} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} propertyPath: m_LocalPosition.x - value: -6.3 + value: -1.8 objectReference: {fileID: 0} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} propertyPath: m_LocalPosition.y @@ -542,7 +734,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} propertyPath: m_LocalPosition.z - value: 11.95 + value: 2.38 objectReference: {fileID: 0} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} propertyPath: m_LocalRotation.w @@ -583,6 +775,28 @@ Transform: m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} m_PrefabInstance: {fileID: 1715656625} m_PrefabAsset: {fileID: 0} +--- !u!195 &1715656628 +NavMeshAgent: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 208658293} + m_Enabled: 1 + m_AgentTypeID: 0 + m_Radius: 0.5 + m_Speed: 3.5 + m_Acceleration: 8 + avoidancePriority: 50 + m_AngularSpeed: 120 + m_StoppingDistance: 0 + m_AutoTraverseOffMeshLink: 1 + m_AutoBraking: 1 + m_AutoRepath: 1 + m_Height: 2 + m_BaseOffset: 0 + m_WalkableMask: 4294967295 + m_ObstacleAvoidanceType: 4 --- !u!1 &2047541735 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Playground 1/NavMesh.asset b/Assets/Scenes/Playground 1/NavMesh.asset new file mode 100644 index 0000000..20b87cb Binary files /dev/null and b/Assets/Scenes/Playground 1/NavMesh.asset differ diff --git a/Assets/Scenes/Playground 1/NavMesh.asset.meta b/Assets/Scenes/Playground 1/NavMesh.asset.meta new file mode 100644 index 0000000..d7d1b67 --- /dev/null +++ b/Assets/Scenes/Playground 1/NavMesh.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b015bab8bed002c438c2a5abb0deec18 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 23800000 + userData: + assetBundleName: + assetBundleVariant: