Added Targeting for entities

*Changed all Runtime Sets to be <EntityBase> instead of <StructureBase> or <EnemyBase>
*Added targeting configuration scriptable object (can now set up many differet targeting schemes and use them as needed)
*Added targeting script
*Modified Turret and Enemy to use targeting script (added on play)
*Added NavMesh and NavMeshAgents for enemy movement to be used during prototyping
This commit is contained in:
Stedd 2022-10-01 21:42:18 +02:00
parent a70bd626a6
commit b1f2446fa6
24 changed files with 560 additions and 147 deletions

View File

@ -413,7 +413,11 @@ MonoBehaviour:
_basePosition: {fileID: 2692714622321691895} _basePosition: {fileID: 2692714622321691895}
_uiFriendlyName: Enemy _uiFriendlyName: Enemy
_entityBaseSet: {fileID: 11400000, guid: c5542e77624472441a67b1f34e19a116, type: 2} _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 --- !u!1 &6940800288144322101
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -437,7 +441,7 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6940800288144322101} 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_LocalPosition: {x: 0, y: 2.01, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 5f6dc84d75dbd9a459e519de42279066 guid: d5813a38da3962d4498fc71ef33361b6
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000 mainObjectFileID: 11400000

View File

@ -1,15 +1,40 @@
using System;
using UnityEngine; using UnityEngine;
using UnityEngine.AI;
namespace AsteroidGame.Entities namespace AsteroidGame.Entities
{ {
public class EnemyBase : EntityBase 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() protected override void OnEnable()
{ {
base.OnEnable(); base.OnEnable();
_enemyBaseSet.Add(this); _enemyBaseSet.Add(this);
InitializeTargeter();
InitializeNavMeshAgent();
}
private void InitializeNavMeshAgent()
{
_navMeshAgent = gameObject.AddComponent<NavMeshAgent>();
_navMeshAgent.speed = 0.1f;
}
private void InitializeTargeter()
{
_targeter = gameObject.AddComponent<Targeter>();
_targeter.SetParent(this);
_targeter.SetConfig(_targeterConfig);
} }
protected override void OnDisable() protected override void OnDisable()
@ -17,5 +42,14 @@ namespace AsteroidGame.Entities
base.OnDisable(); base.OnDisable();
_enemyBaseSet.Remove(this); _enemyBaseSet.Remove(this);
} }
private void Update()
{
if (_targeter.FoundTarget())
{
_target = _targeter.GetTarget();
_navMeshAgent.SetDestination(_target.GetBasePosition());
}
}
} }
} }

View File

@ -9,7 +9,7 @@ MonoBehaviour:
m_GameObject: {fileID: 0} m_GameObject: {fileID: 0}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 33f48df2d03212c4986fe2c47c5de796, type: 3} m_Script: {fileID: 11500000, guid: 9da2d6a0206101c47a22881a0ba2ece2, type: 3}
m_Name: ActiveEnemies m_Name: ActiveEnemyEntities
m_EditorClassIdentifier: m_EditorClassIdentifier:
_list: [] _list: []

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: bccdf438a1004a444bc24492728d6fbd guid: e5f25127d92be074aac6e7b745fae107
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000 mainObjectFileID: 11400000

View File

@ -9,7 +9,7 @@ MonoBehaviour:
m_GameObject: {fileID: 0} m_GameObject: {fileID: 0}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fbc6f67c9903cc8448f793da64d840cf, type: 3} m_Script: {fileID: 11500000, guid: 9da2d6a0206101c47a22881a0ba2ece2, type: 3}
m_Name: ActiveStructures m_Name: ActiveStructureEntities
m_EditorClassIdentifier: m_EditorClassIdentifier:
_list: [] _list: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1925957d2bc2f0c4a9210131f2d2c4e5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 02781660543c12d4ebddaf334eb0d730
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -60,7 +60,7 @@ MonoBehaviour:
_isConsumer: 0 _isConsumer: 0
_maxPower: 100 _maxPower: 100
_currentPower: 0 _currentPower: 0
_structureBaseSet: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} _structureBaseSet: {fileID: 11400000, guid: 1925957d2bc2f0c4a9210131f2d2c4e5, type: 2}
--- !u!1 &1863277996181035512 --- !u!1 &1863277996181035512
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -18,7 +18,7 @@ namespace AsteroidGame.Entities
[SerializeField] protected int _currentPower; [SerializeField] protected int _currentPower;
[Header("Configuration")] [Header("Configuration")]
[SerializeField] private SStructureBaseRuntimeSet _structureBaseSet; [SerializeField] private SEntityBaseRuntimeSet _structureBaseSet;
#region Private #region Private

View File

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

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 14893e62c82e47e4d886fdac849f9302
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -6,13 +6,10 @@ namespace AsteroidGame.Entities
{ {
public class Turret : StructureBase public class Turret : StructureBase
{ {
[Header("WeaponParameters")] [SerializeField] [Header("WeaponParameters")]
private float _weaponRange = 40f;
[SerializeField] private int _damage = 1; [SerializeField] private int _damage = 1;
[SerializeField] private float _fireRate = 1; [SerializeField] private float _fireRate = 1;
[SerializeField] private float _projectileSpeed = 5; [SerializeField] private float _projectileSpeed = 5;
[SerializeField] private TargetStrategy _targetStrategy = TargetStrategy.LowestHealth;
[Header("Stats")] [Header("Stats")]
[SerializeField] private float _kills = 0f; [SerializeField] private float _kills = 0f;
@ -22,103 +19,40 @@ namespace AsteroidGame.Entities
[SerializeField] private Transform _turretHead; [SerializeField] private Transform _turretHead;
[SerializeField] private Transform _barrel; [SerializeField] private Transform _barrel;
[Header("Target")] [Header("Targeter")]
[SerializeField] private SEnemyBaseRuntimeSet _activeEnemies; [SerializeField] private STargeterConfig _targeterConfig;
[SerializeField] private EnemyBase _targetEnemy; [SerializeField] private Targeter _targeter;
[SerializeField] private EntityBase _target;
[SerializeField] private enum TargetStrategy
{
ClosestEnemy,
LowestHealth
};
#region Publics #region Publics
public float MaxDistance { get; set; }
public int Damage public int Damage
{ {
get => _damage; get => _damage;
set => _damage = value; set => _damage = value;
} }
public int FireRate { get; set; }
#endregion #endregion
private void Start() protected override void OnEnable()
{ {
// enemyHandler = FindObjectOfType<EnemyHandler>(); base.OnEnable();
// scoreHandler = FindObjectOfType<ScoreHandler>(); InitializeTargeter();
UpdateWeaponParameters(_fireRate, _projectileSpeed); }
private void InitializeTargeter()
{
_targeter = gameObject.AddComponent<Targeter>();
_targeter.SetParent(this);
_targeter.SetConfig(_targeterConfig);
} }
private void Update() private void Update()
{ {
FindEnemyTarget(); if (_targeter.FoundTarget())
}
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)
{ {
float distanceToTarget = Vector3.Magnitude(enemy.GetCenterPosition() - GetCenterPosition()); _target = _targeter.GetTarget();
_turretHead.transform.LookAt(_target.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

@ -756,15 +756,15 @@ MonoBehaviour:
_isConsumer: 1 _isConsumer: 1
_maxPower: 10 _maxPower: 10
_currentPower: 0 _currentPower: 0
_structureBaseSet: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} _structureBaseSet: {fileID: 11400000, guid: 1925957d2bc2f0c4a9210131f2d2c4e5, type: 2}
_weaponRange: 10 _weaponRange: 10
_damage: 1 _damage: 1
_fireRate: 1 _fireRate: 1
_projectileSpeed: 5 _projectileSpeed: 5
_targetStrategy: 1
_kills: 0 _kills: 0
_damageDealt: 0 _damageDealt: 0
_turretHead: {fileID: 5103935544653627402} _turretHead: {fileID: 5103935544653627402}
_barrel: {fileID: 5103935545559248087} _barrel: {fileID: 5103935545559248087}
_activeEnemies: {fileID: 11400000, guid: 5f6dc84d75dbd9a459e519de42279066, type: 2} _targeterConfig: {fileID: 11400000, guid: 9df40bc219ab8f04cb4e86558bc0df86, type: 2}
_targeter: {fileID: 0}
_targetEnemy: {fileID: 0} _targetEnemy: {fileID: 0}

View File

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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9df40bc219ab8f04cb4e86558bc0df86
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 28bcd65de1e3cf744a3ac9b53c030319
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 624b0cf4f0dd38a459121c046c909786 guid: c3359f2750b233549861a0b0a52b3224
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@ -122,7 +122,7 @@ NavMeshSettings:
preserveTilesOutsideBounds: 0 preserveTilesOutsideBounds: 0
debug: debug:
m_Flags: 0 m_Flags: 0
m_NavMeshData: {fileID: 0} m_NavMeshData: {fileID: 23800000, guid: b015bab8bed002c438c2a5abb0deec18, type: 2}
--- !u!1 &38176945 --- !u!1 &38176945
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -271,56 +271,16 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 5 m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 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 --- !u!4 &624469242 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 5263199550015624126, guid: 2e352ad6389b4234083764d15d4e6a5f, type: 3} m_CorrespondingSourceObject: {fileID: 5263199550015624126, guid: 2e352ad6389b4234083764d15d4e6a5f, type: 3}
m_PrefabInstance: {fileID: 5263199549561108292} m_PrefabInstance: {fileID: 5263199549561108292}
m_PrefabAsset: {fileID: 0} 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 --- !u!4 &991542217 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 493861824998956378, guid: 57a75520298c47140a928041b05d7f3c, type: 3} m_CorrespondingSourceObject: {fileID: 493861824998956378, guid: 57a75520298c47140a928041b05d7f3c, type: 3}
@ -331,6 +291,103 @@ Transform:
m_CorrespondingSourceObject: {fileID: 5200388201450229074, guid: 07826307af1971948b98dd42d1e9457a, type: 3} m_CorrespondingSourceObject: {fileID: 5200388201450229074, guid: 07826307af1971948b98dd42d1e9457a, type: 3}
m_PrefabInstance: {fileID: 5200388200885062254} m_PrefabInstance: {fileID: 5200388200885062254}
m_PrefabAsset: {fileID: 0} 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 --- !u!4 &1158682046 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 664620742648054780, guid: 3a89f87af6ee84a459d98a4c296dd1be, type: 3} m_CorrespondingSourceObject: {fileID: 664620742648054780, guid: 3a89f87af6ee84a459d98a4c296dd1be, type: 3}
@ -393,6 +450,104 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} 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 --- !u!1001 &1421503443
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -521,6 +676,39 @@ Transform:
m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
m_PrefabInstance: {fileID: 1494435108} m_PrefabInstance: {fileID: 1494435108}
m_PrefabAsset: {fileID: 0} 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 --- !u!1001 &1715656625
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -528,13 +716,17 @@ PrefabInstance:
m_Modification: m_Modification:
m_TransformParent: {fileID: 157782261} m_TransformParent: {fileID: 157782261}
m_Modifications: 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} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 1 value: 1
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -6.3 value: -1.8
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
propertyPath: m_LocalPosition.y propertyPath: m_LocalPosition.y
@ -542,7 +734,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: 11.95 value: 2.38
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} - target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
propertyPath: m_LocalRotation.w propertyPath: m_LocalRotation.w
@ -583,6 +775,28 @@ Transform:
m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
m_PrefabInstance: {fileID: 1715656625} m_PrefabInstance: {fileID: 1715656625}
m_PrefabAsset: {fileID: 0} 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 --- !u!1 &2047541735
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b015bab8bed002c438c2a5abb0deec18
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 23800000
userData:
assetBundleName:
assetBundleVariant: