Add random point moving.

This commit is contained in:
2022-04-13 11:00:07 +07:00
parent 5371fe0f9c
commit b9b2f3ddf7
43 changed files with 3408 additions and 711 deletions

View File

@ -1 +1 @@
{"count":1,"self":9.9644096,"total":9.9980019,"children":{"InitializeActuators":{"count":1,"self":0.0019478999999999998,"total":0.0019478999999999998,"children":null},"AgentSendState":{"count":247,"self":0.0019958,"total":0.0019958,"children":null},"DecideAction":{"count":247,"self":0.0286527,"total":0.0286527,"children":null}},"gauges":{},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1649742529","unity_version":"2019.4.36f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2019.4.36f1\\Editor\\Unity.exe -projectpath D:\\real-shooter-git -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-user -hubSessionId cd9a8190-ba14-11ec-a0c5-63621669bd08 -accessToken 1o07z9cTg16d5JsIaxEBFdNKzAhY1SajgTdTHeOQ360012f","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"Greatest_map_ever","end_time_seconds":"1649742539"}} {"count":1,"self":27.008124799999997,"total":28.0164227,"children":{"InitializeActuators":{"count":1,"self":0.0030001,"total":0.0030001,"children":null},"InitializeSensors":{"count":1,"self":0.0020001,"total":0.0020001,"children":null},"AgentSendState":{"count":1148,"self":0.0250195,"total":0.40993029999999997,"children":{"CollectObservations":{"count":1148,"self":0.3739037,"total":0.3739037,"children":null},"WriteActionMask":{"count":1148,"self":0.0050046,"total":0.0050046,"children":null},"RequestDecision":{"count":1148,"self":0.0060025,"total":0.0060025,"children":null}}},"DecideAction":{"count":1148,"self":0.33184349999999996,"total":0.33184349999999996,"children":null},"AgentAct":{"count":1148,"self":0.2595281,"total":0.2595281,"children":null}},"gauges":{"NPC.CumulativeReward":{"count":11,"max":0,"min":0,"runningAverage":0,"value":0,"weightedAverage":0}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1649822158","unity_version":"2019.4.35f1","command_line_arguments":"C:\\Program Files\\unityeditorfolder\\2019.4.35f1\\Editor\\Unity.exe -projectpath F:\\SigmaRiskManagment\\real shooter Git Version -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-Leonid_Krazer -hubSessionId dca9b0c0-ba6e-11ec-ba13-6d2f32043678 -accessToken h2wulrZC-_wNB02rFLc8VoUWrSoRJ5zUGCjS9AOIxNY009f","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"Greatest_map_ever","end_time_seconds":"1649822186"}}

2744
Assets/Prefabs/DragonFucker.prefab generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 9fbac871417fccb40831b0f935247a29 guid: c886079c5bf3e67408d356ea1a932c5f
folderAsset: yes PrefabImporter:
DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:

View File

@ -100,6 +100,9 @@ GameObject:
- component: {fileID: 4528203470625763701} - component: {fileID: 4528203470625763701}
- component: {fileID: 4528203470625763700} - component: {fileID: 4528203470625763700}
- component: {fileID: 1061105263471521090} - component: {fileID: 1061105263471521090}
- component: {fileID: 1809549200}
- component: {fileID: 1809549201}
- component: {fileID: 1809549212}
m_Layer: 8 m_Layer: 8
m_Name: Player m_Name: Player
m_TagString: Defender m_TagString: Defender
@ -221,7 +224,7 @@ CharacterController:
m_GameObject: {fileID: 4528203470625763699} m_GameObject: {fileID: 4528203470625763699}
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IsTrigger: 0 m_IsTrigger: 0
m_Enabled: 1 m_Enabled: 0
serializedVersion: 2 serializedVersion: 2
m_Height: 2 m_Height: 2
m_Radius: 0.5 m_Radius: 0.5
@ -237,11 +240,12 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4528203470625763699} m_GameObject: {fileID: 4528203470625763699}
m_Enabled: 1 m_Enabled: 0
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9826297ef4d853741b2af768441ec7f7, type: 3} m_Script: {fileID: 11500000, guid: 9826297ef4d853741b2af768441ec7f7, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
input_View: {x: 0, y: 0}
cameraHolder: {fileID: 4528203471293941515} cameraHolder: {fileID: 4528203471293941515}
feetTransform: {fileID: 4528203471164033737} feetTransform: {fileID: 4528203471164033737}
playerSettings: playerSettings:
@ -271,17 +275,18 @@ MonoBehaviour:
gravityAmount: 0.05 gravityAmount: 0.05
gravityMin: -3 gravityMin: -3
jumpingForce: {x: 0, y: 0, z: 0} jumpingForce: {x: 0, y: 0, z: 0}
playerStance: 2 playerStance: 0
playerStanceSmoothing: 0.2 playerStanceSmoothing: 0.2
playerStandStance: playerStandStance:
CameraHeight: 0.7 CameraHeight: 0.7
StanceCollider: {fileID: 4528203470625763702} StanceCollider: {fileID: 4528203470625763702}
playerCrouchStance: playerCrouchStance:
CameraHeight: 0 CameraHeight: 0.3
StanceCollider: {fileID: 4528203470625763690} StanceCollider: {fileID: 4528203470625763690}
playerProneStance: playerProneStance:
CameraHeight: -0.58 CameraHeight: -0.58
StanceCollider: {fileID: 4528203470625763703} StanceCollider: {fileID: 4528203470625763703}
currentWeapon: {fileID: 0}
--- !u!114 &1061105263471521090 --- !u!114 &1061105263471521090
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -294,7 +299,77 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a6f2a081cfc8c4b4bb6864331109d147, type: 3} m_Script: {fileID: 11500000, guid: a6f2a081cfc8c4b4bb6864331109d147, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
LastTimeHit: 0 agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 10
moveController: {fileID: 1809549200}
--- !u!114 &1809549200
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4528203470625763699}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d3ebcf807a37f344998fd648dfc9376d, type: 3}
m_Name:
m_EditorClassIdentifier:
mapManager: {fileID: 0}
navMeshAgent: {fileID: 1809549201}
--- !u!195 &1809549201
NavMeshAgent:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4528203470625763699}
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: 1
m_WalkableMask: 4294967295
m_ObstacleAvoidanceType: 4
--- !u!114 &1809549212
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4528203470625763699}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5d1c4e0b1822b495aa52bc52839ecb30, type: 3}
m_Name:
m_EditorClassIdentifier:
m_BrainParameters:
VectorObservationSize: 4
NumStackedVectorObservations: 1
m_ActionSpec:
m_NumContinuousActions: 0
BranchSizes: 01000000
VectorActionSize: 01000000
VectorActionDescriptions: []
VectorActionSpaceType: 0
hasUpgradedBrainParametersWithActionSpec: 1
m_Model: {fileID: 0}
m_InferenceDevice: 3
m_BehaviorType: 1
m_BehaviorName: Defender Behaviour
TeamId: 0
m_UseChildSensors: 0
m_UseChildActuators: 1
m_ObservableAttributeHandling: 2
--- !u!1 &4528203471164033736 --- !u!1 &4528203471164033736
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1 m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0} m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 705507994} m_Sun: {fileID: 705507994}
m_IndirectSpecularColor: {r: 0.44657826, g: 0.49641263, b: 0.57481676, a: 1} m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
m_UseRadianceAmbientProbe: 0 m_UseRadianceAmbientProbe: 0
--- !u!157 &3 --- !u!157 &3
LightmapSettings: LightmapSettings:
@ -121,59 +121,6 @@ NavMeshSettings:
debug: debug:
m_Flags: 0 m_Flags: 0
m_NavMeshData: {fileID: 23800000, guid: 305bb221606d7a748acca94156e2d347, type: 2} m_NavMeshData: {fileID: 23800000, guid: 305bb221606d7a748acca94156e2d347, type: 2}
--- !u!1 &120549363
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 120549365}
- component: {fileID: 120549364}
m_Layer: 0
m_Name: NavMeshAgent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!195 &120549364
NavMeshAgent:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 120549363}
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!4 &120549365
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 120549363}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 19.553204, y: 6.782543, z: -39.4}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &129751243 --- !u!1 &129751243
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1335,168 +1282,6 @@ Transform:
m_Father: {fileID: 782729761} m_Father: {fileID: 782729761}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1061293905
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2836004473841745626, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 9100000, guid: 95a44e56d04c7d248ba723eda9611c51, type: 2}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_RootOrder
value: 6
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalPosition.x
value: 13.8
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalPosition.y
value: 1.22
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalPosition.z
value: -11.53
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2836004475591197023, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2836004475591695743, guid: f432554f564e69242897607d34218939,
type: 3}
propertyPath: m_Name
value: DragonFucker
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f432554f564e69242897607d34218939, type: 3}
--- !u!1 &1061293906 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 2836004475591695743, guid: f432554f564e69242897607d34218939,
type: 3}
m_PrefabInstance: {fileID: 1061293905}
m_PrefabAsset: {fileID: 0}
--- !u!64 &1061293907
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1061293906}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 4
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 0}
--- !u!136 &1061293908
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1061293906}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.5
m_Height: 1
m_Direction: 1
m_Center: {x: 0, y: 1, z: 0}
--- !u!114 &1061293909
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1061293906}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9826297ef4d853741b2af768441ec7f7, type: 3}
m_Name:
m_EditorClassIdentifier:
input_View: {x: 0, y: 0}
cameraHolder: {fileID: 0}
feetTransform: {fileID: 0}
playerSettings:
ViewXSensetivity: 0
ViewYSensetivity: 0
ViewXInverted: 0
ViewYInverted: 0
SprintingHold: 0
MovementSmoothing: 0
RunningForwardSpeed: 0
RunningStrafeSpeed: 0
WalkingForwardSpeed: 0
WalkingBackwardSpeed: 0
WalkingStrafeSpeed: 0
JumpingHeight: 0
JumpingFalloff: 0
FallingSmoothing: 0
SpeedEffector: 1
CrouchSpeedEffector: 0
ProneSpeedEffector: 0
FallingSpeedEffector: 0
ViewClampYMin: -70
ViewClampYMax: 80
playerMask:
serializedVersion: 2
m_Bits: 0
gravityAmount: 0
gravityMin: 0
jumpingForce: {x: 0, y: 0, z: 0}
playerStance: 0
playerStanceSmoothing: 0
playerStandStance:
CameraHeight: 0
StanceCollider: {fileID: 0}
playerCrouchStance:
CameraHeight: 0
StanceCollider: {fileID: 0}
playerProneStance:
CameraHeight: 0
StanceCollider: {fileID: 0}
currentWeapon: {fileID: 0}
--- !u!1 &1116745543 --- !u!1 &1116745543
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1511,7 +1296,7 @@ GameObject:
- component: {fileID: 1116745544} - component: {fileID: 1116745544}
m_Layer: 0 m_Layer: 0
m_Name: navpoint2 m_Name: navpoint2
m_TagString: Untagged m_TagString: Point
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
@ -1689,7 +1474,7 @@ Mesh:
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_Name: pb_Mesh32196 m_Name: pb_Mesh17416
serializedVersion: 10 serializedVersion: 10
m_SubMeshes: m_SubMeshes:
- serializedVersion: 2 - serializedVersion: 2
@ -1944,7 +1729,7 @@ GameObject:
- component: {fileID: 1345085342} - component: {fileID: 1345085342}
m_Layer: 0 m_Layer: 0
m_Name: navpoint1 m_Name: navpoint1
m_TagString: Untagged m_TagString: Point
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
@ -2335,90 +2120,6 @@ MeshFilter:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1663305221} m_GameObject: {fileID: 1663305221}
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &1809549197
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_RootOrder
value: 7
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalPosition.x
value: 40.27
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalPosition.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalPosition.z
value: -15.91
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763689, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763699, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_Name
value: Player
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763700, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: playerStance
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763700, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: playerCrouchStance.CameraHeight
value: 0.3
objectReference: {fileID: 0}
- target: {fileID: 4528203470625763703, guid: 99bb17a23a489624baeaf337f91a4f84,
type: 3}
propertyPath: m_Enabled
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 99bb17a23a489624baeaf337f91a4f84, type: 3}
--- !u!1 &1858987083 --- !u!1 &1858987083
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2762,7 +2463,7 @@ GameObject:
- component: {fileID: 2004854094} - component: {fileID: 2004854094}
m_Layer: 0 m_Layer: 0
m_Name: navpoint3 m_Name: navpoint3
m_TagString: Untagged m_TagString: Point
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
@ -2835,7 +2536,7 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2004854093} m_GameObject: {fileID: 2004854093}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 47.446796, y: -5.782543, z: -25.400002} m_LocalPosition: {x: 30.59, y: -5.782543, z: -1.58}
m_LocalScale: {x: 1.4367, y: 1.4367, z: 1.4367} m_LocalScale: {x: 1.4367, y: 1.4367, z: 1.4367}
m_Children: [] m_Children: []
m_Father: {fileID: 2060099472} m_Father: {fileID: 2060099472}
@ -2997,6 +2698,88 @@ MeshFilter:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2114154251} m_GameObject: {fileID: 2114154251}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!114 &5078004101906046130
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a6f2a081cfc8c4b4bb6864331109d147, type: 3}
m_Name:
m_EditorClassIdentifier:
agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
MaxStep: 100
moveController: {fileID: 5242608118223468128}
--- !u!114 &5242608118223468128
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d3ebcf807a37f344998fd648dfc9376d, type: 3}
m_Name:
m_EditorClassIdentifier:
navMeshAgent: {fileID: 5242608118223468129}
--- !u!195 &5242608118223468129
NavMeshAgent:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
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: 1
m_WalkableMask: 4294967295
m_ObstacleAvoidanceType: 4
--- !u!114 &5242608118223468140
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5d1c4e0b1822b495aa52bc52839ecb30, type: 3}
m_Name:
m_EditorClassIdentifier:
m_BrainParameters:
VectorObservationSize: 4
NumStackedVectorObservations: 1
m_ActionSpec:
m_NumContinuousActions: 0
BranchSizes: 01000000
VectorActionSize: 01000000
VectorActionDescriptions: []
VectorActionSpaceType: 0
hasUpgradedBrainParametersWithActionSpec: 1
m_Model: {fileID: 0}
m_InferenceDevice: 0
m_BehaviorType: 1
m_BehaviorName: NPC
TeamId: 0
m_UseChildSensors: 1
m_UseChildActuators: 1
m_ObservableAttributeHandling: 0
--- !u!1001 &6818223692685937217 --- !u!1001 &6818223692685937217
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -3071,3 +2854,366 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1685c1d9ce4ab174f95c646b1826010b, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 1685c1d9ce4ab174f95c646b1826010b, type: 3}
--- !u!23 &8333476723876163232
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
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
--- !u!1 &8509012040201336570
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8509012040201336571}
m_Layer: 8
m_Name: CameraHolder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8509012040201336571
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040201336570}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.7, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8509012041069629704}
m_Father: {fileID: 8509012040873181337}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8509012040340093752
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8509012040340093753}
m_Layer: 8
m_Name: FeetTransform
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8509012040340093753
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040340093752}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 8509012040873181337}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8509012040873181315
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8509012040873181337}
- component: {fileID: 8509012040873181336}
- component: {fileID: 8333476723876163232}
- component: {fileID: 8509012040873181318}
- component: {fileID: 8509012040873181338}
- component: {fileID: 8509012040873181319}
- component: {fileID: 8509012040873181317}
- component: {fileID: 8509012040873181316}
- component: {fileID: 5078004101906046130}
- component: {fileID: 5242608118223468128}
- component: {fileID: 5242608118223468129}
- component: {fileID: 5242608118223468140}
- component: {fileID: 8509012040873181320}
m_Layer: 8
m_Name: 'Player '
m_TagString: Defender
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &8509012040873181316
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9826297ef4d853741b2af768441ec7f7, type: 3}
m_Name:
m_EditorClassIdentifier:
input_View: {x: 0, y: 0}
cameraHolder: {fileID: 8509012040201336571}
feetTransform: {fileID: 8509012040340093753}
playerSettings:
ViewXSensetivity: 20
ViewYSensetivity: 20
ViewXInverted: 0
ViewYInverted: 0
SprintingHold: 0
MovementSmoothing: 0
RunningForwardSpeed: 10
RunningStrafeSpeed: 6
WalkingForwardSpeed: 4
WalkingBackwardSpeed: 2
WalkingStrafeSpeed: 3
JumpingHeight: 6
JumpingFalloff: 1
FallingSmoothing: 0
SpeedEffector: 1
CrouchSpeedEffector: 0
ProneSpeedEffector: 0
FallingSpeedEffector: 0
ViewClampYMin: -70
ViewClampYMax: 80
playerMask:
serializedVersion: 2
m_Bits: 55
gravityAmount: 0.05
gravityMin: -3
jumpingForce: {x: 0, y: 0, z: 0}
playerStance: 0
playerStanceSmoothing: 0.2
playerStandStance:
CameraHeight: 0.7
StanceCollider: {fileID: 8509012040873181318}
playerCrouchStance:
CameraHeight: 0.3
StanceCollider: {fileID: 8509012040873181338}
playerProneStance:
CameraHeight: -0.58
StanceCollider: {fileID: 8509012040873181319}
currentWeapon: {fileID: 0}
--- !u!143 &8509012040873181317
CharacterController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 0
serializedVersion: 2
m_Height: 2
m_Radius: 0.5
m_SlopeLimit: 45
m_StepOffset: 0.3
m_SkinWidth: 0.08
m_MinMoveDistance: 0.001
m_Center: {x: 0, y: 0, z: 0}
--- !u!136 &8509012040873181318
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 0
m_Radius: 0.3
m_Height: 2
m_Direction: 1
m_Center: {x: 0, y: 0, z: 0}
--- !u!136 &8509012040873181319
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.3
m_Height: 0.8
m_Direction: 1
m_Center: {x: 0, y: -0.6, z: 0}
--- !u!114 &8509012040873181320
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a5c9d521e5ef4759a8246a07d52221e, type: 3}
m_Name:
m_EditorClassIdentifier:
DecisionPeriod: 1
TakeActionsBetweenDecisions: 0
--- !u!33 &8509012040873181336
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &8509012040873181337
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_LocalRotation: {x: -0, y: 0.6820348, z: -0, w: 0.7313197}
m_LocalPosition: {x: 40.54, y: 1, z: -15.91}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8509012040201336571}
- {fileID: 8509012040340093753}
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 86.006004, z: 0}
--- !u!136 &8509012040873181338
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012040873181315}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 0
m_Radius: 0.3
m_Height: 1.3
m_Direction: 1
m_Center: {x: 0, y: -0.35, z: 0}
--- !u!4 &8509012041069629704
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012041069629749}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.734, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 8509012040201336571}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8509012041069629749
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8509012041069629704}
- component: {fileID: 8509012041069629751}
- component: {fileID: 8509012041069629750}
m_Layer: 8
m_Name: Camera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &8509012041069629750
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012041069629749}
m_Enabled: 1
--- !u!20 &8509012041069629751
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8509012041069629749}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022

View File

@ -1,17 +0,0 @@
using Unity;
using UnityEngine;
public abstract class BaseBehaviour
{
protected NPC thisNPC;
protected IDoActivity DoActivity;
protected BaseBehaviour(NPC npc)
{
thisNPC = npc;
}
public void DoAction()
{
DoActivity?.DoActivity();
}
}

View File

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

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 362d340e6754883459f3dc89c9ddc476
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
public class DumbAttacker : BaseBehaviour
{
public DumbAttacker(NPC npc) : base(npc)
{
DoActivity = new DumbAttackerBehaviour();
}
}

View File

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

View File

@ -1,7 +0,0 @@
public class DumbDefender : BaseBehaviour
{
public DumbDefender(NPC npc) : base(npc)
{
DoActivity = new DumbDefenderBehaviour();
}
}

View File

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

View File

@ -1,7 +0,0 @@
public class Human : BaseBehaviour
{
public Human(NPC npc) : base(npc)
{
DoActivity = new HumanBehaviour();
}
}

View File

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

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 93364cc95c8c9764e83d70fcce9da482
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,9 +0,0 @@
using UnityEngine;
class DumbAttackerBehaviour : IDoActivity
{
public void DoActivity()
{
Debug.Log("I do attackers things!");
}
}

View File

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

View File

@ -1,9 +0,0 @@
using UnityEngine;
class DumbDefenderBehaviour : IDoActivity
{
public void DoActivity()
{
Debug.Log("I do defenders things!");
}
}

View File

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

View File

@ -1,8 +0,0 @@
class HumanBehaviour : IDoActivity
{
public void DoActivity()
{
}
}

View File

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

View File

@ -1,4 +0,0 @@
public interface IDoActivity
{
void DoActivity();
}

View File

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

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 93133f9c3db1b944d9120ea789988f9b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,45 +0,0 @@
public abstract class AbstractCharacterFactory
{
protected IDoActivity behaviour;
protected AbstractCharacterFactory() { }
public abstract BaseBehaviour CreateCharacterBehaviour(NPC npc);
}
public class DumbDefenderFactory : AbstractCharacterFactory
{
public DumbDefenderFactory()
{
behaviour = new DumbDefenderBehaviour();
}
public override BaseBehaviour CreateCharacterBehaviour(NPC npc)
{
return new DumbDefender(npc);
}
}
public class DumbAttackerFactory : AbstractCharacterFactory
{
public DumbAttackerFactory()
{
behaviour = new DumbAttackerBehaviour();
}
public override BaseBehaviour CreateCharacterBehaviour(NPC npc)
{
return new DumbAttacker(npc);
}
}
public class HumanFactory : AbstractCharacterFactory
{
public HumanFactory()
{
behaviour = new HumanBehaviour();
}
public override BaseBehaviour CreateCharacterBehaviour(NPC npc)
{
return new Human(npc);
}
}

View File

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

View File

@ -1,55 +0,0 @@
using System.Collections.Generic;
using System;
using UnityEngine;
public class CharacterSpawner : MonoBehaviour
{
[SerializeField] private GameObject botPrefab;
[SerializeField] private List<NavPoint> defendersSpawnPoints;
[SerializeField] private List<NavPoint> attackersSpawnPoints;
private static Dictionary<(TypeAI, Team), Func<NPC, BaseBehaviour>> behaviourDictionary;
private static System.Random random;
public void Start()
{
behaviourDictionary = new Dictionary<(TypeAI, Team), Func<NPC, BaseBehaviour>>()
{
{ (TypeAI.DumbAlgorithm, Team.Attackers), new Func<NPC,BaseBehaviour>( npc => new DumbAttacker(npc))},
{ (TypeAI.DumbAlgorithm, Team.Defenders), new Func<NPC,BaseBehaviour>( npc => new DumbDefender(npc)) },
{ (TypeAI.HumanAI, Team.Defenders), new Func<NPC,BaseBehaviour>( npc => new Human(npc))},
{ (TypeAI.HumanAI, Team.Attackers), new Func<NPC,BaseBehaviour>( npc => new Human(npc))},
//And Other behaviours
};
if (SettingsReader.Instance.GetSettings.hasHumanAttacker && SettingsReader.Instance.GetSettings.hasHumanDefender)
throw new System.Exception("Not allowed to have two players");
else if (SettingsReader.Instance.GetSettings.hasHumanAttacker == true)
{
spawnCharacter(behaviourDictionary[(TypeAI.HumanAI, Team.Attackers)], Team.Attackers);
}
else if (SettingsReader.Instance.GetSettings.hasHumanDefender == true)
{
spawnCharacter(behaviourDictionary[(TypeAI.HumanAI, Team.Defenders)], Team.Defenders);
}
for (int i = 0; i < SettingsReader.Instance.GetSettings.numOfAttackers - (SettingsReader.Instance.GetSettings.hasHumanAttacker ? 1 : 0); i++)
{
spawnCharacter(behaviourDictionary[(SettingsReader.Instance.GetSettings.atcTeamAI, Team.Attackers)], Team.Attackers);
}
for (int i = 0; i < SettingsReader.Instance.GetSettings.numOfAttackers - (SettingsReader.Instance.GetSettings.hasHumanDefender ? 1 : 0); i++)
{
spawnCharacter(behaviourDictionary[(SettingsReader.Instance.GetSettings.defTeamAI, Team.Defenders)], Team.Defenders);
}
}
private void spawnCharacter(Func<NPC, BaseBehaviour> behaviourFunc, Team team)
{
var spawnPoint = team == Team.Defenders ?
defendersSpawnPoints[random.Next(0, defendersSpawnPoints.Count)].position :
attackersSpawnPoints[random.Next(0, attackersSpawnPoints.Count)].position;
var entity = Instantiate(botPrefab, spawnPoint, Quaternion.identity);
var npc = entity.GetComponent<NPC>();
npc.SetBehaviour(behaviourFunc(npc));
}
}

View File

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

View File

@ -1,39 +1,71 @@
using System; using System;
using UnityEngine; using UnityEngine;
public class CharacterCondition : MonoBehaviour public enum NPCState
{ {
public event Action<object> OnKilledEvent; InCover,
public event Action<int> OnDamageHealthTakenEvent; InBlancPoint,
public event Action<int> OnDamageArmourTakenEvent; InRunning,
public event Action<int> OnAmmunitionTakenEvent; }
[SerializeField] private int HealthPoints; public class CharacterCondition
[SerializeField] private int ArmourPoints; {
[SerializeField] private int Ammunition; public event Action<int> OnChangeHealthEvent;
public event Action<int> OnChangeArmourEvent;
public void Start() public event Action<int> OnChangeAmmunitionEvent;
{
private int health;
} public int HealthPoints
{
public void GetDamage(float damage) get
{ {
HealthPoints -= Mathf.RoundToInt(damage * (1 - ArmourPoints * 0.5f)); return health;
ArmourPoints -= Mathf.RoundToInt(Mathf.Sqrt(damage) * 5); }
private set
OnDamageHealthTakenEvent?.Invoke(HealthPoints); {
OnDamageArmourTakenEvent?.Invoke(ArmourPoints); health = value;
if (HealthPoints < 0) OnChangeHealthEvent?.Invoke(value);
OnKilledEvent?.Invoke(gameObject); }
} }
public void GiveHealth(int health) => HealthPoints = Mathf.Clamp(health + HealthPoints, 0, 100); private int armour;
public void SetHealth(int health) => HealthPoints = Mathf.Clamp(health, 0, 100); public int ArmourPoints
public void GiveArmour(int armour) => ArmourPoints = Mathf.Clamp(armour + ArmourPoints, 0, 100); {
public void SetArmour(int armour) => ArmourPoints = Mathf.Clamp(armour, 0, 100); get
public void TakeAmmo(int ammo) {
{ return armour;
Ammunition += ammo; }
OnAmmunitionTakenEvent?.Invoke(Ammunition); private set
} {
armour = value;
OnChangeArmourEvent?.Invoke(value);
}
}
private int ammo;
public int Ammunition
{
get
{
return ammo;
}
private set
{
ammo = value;
OnChangeAmmunitionEvent?.Invoke(value);
}
}
[HideInInspector]
public NPCState npcState { get; private set; }
public CharacterCondition()
{
var settings = SettingsReader.Instance.GetSettings;
ammo = settings.maxAmmo;
health = settings.maxHealth;
armour = settings.maxArmour;
}
public void GiveHealth(int health) => HealthPoints = Mathf.Clamp(health + HealthPoints, 0, 100);
public void GiveArmour(int armour) => ArmourPoints = Mathf.Clamp(armour + ArmourPoints, 0, 100);
public void TakeAmmo(int ammo) => Ammunition += ammo;
} }

View File

@ -7,7 +7,6 @@ using UnityEngine.AI;
public class MovementController : MonoBehaviour public class MovementController : MonoBehaviour
{ {
public NavPoint currentPosition { get; private set; } public NavPoint currentPosition { get; private set; }
[SerializeField] private MapManager mapManager;
[SerializeField] private NavMeshAgent navMeshAgent; [SerializeField] private NavMeshAgent navMeshAgent;
private void Start() private void Start()
@ -21,18 +20,21 @@ public class MovementController : MonoBehaviour
goToNextNavPoint(pointCandidate); goToNextNavPoint(pointCandidate);
} }
public void MoveToRandomPoint()
{
Debug.Log(MapManager.navPoints == null);
goToNextNavPoint(MapManager.navPoints[Random.Range(0, MapManager.navPoints.Count)]);
}
// todo внутри сенсора передавать в mlagents как variable length observations: https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Learning-Environment-Design-Agents.md#variable-length-observations
private NavPoint getPointCandidate() private NavPoint getPointCandidate()
{ {
var NavPointsPositions = mapManager.navPoints var NavPointsPositions = MapManager.navPoints
.Select(point => point.transform.position) .Select(point => point.transform.position)
.Where(point => (currentPosition.transform.position - point).magnitude <= SettingsReader.Instance.GetSettings.movementSpeed) .Where(point => (currentPosition.transform.position - point).magnitude <= SettingsReader.Instance.GetSettings.movementSpeed)
.ToList(); .ToList();
//TODO AI
return null; return null;
} }
private void goToNextNavPoint(NavPoint destination) => public void goToNextNavPoint(NavPoint destination) =>
navMeshAgent.SetDestination(destination.transform.position); navMeshAgent.SetDestination(destination.transform.position);
} }

View File

@ -1,37 +1,61 @@
using System; using System;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using Unity.MLAgents; using Unity.MLAgents;
using Unity.MLAgents.Sensors; using Unity.MLAgents.Sensors;
using Unity.MLAgents.Actuators;
[RequireComponent(typeof(MovementController))]
public class NPC : Agent public class NPC : Agent
{ {
public float LastTimeHit;
private BaseBehaviour NPCBehaviour;
public List<Action> ActionList;
[SerializeField]
private List<ISensor> SensorList; // todo тут интерфейс должен быть наш
public void SetBehaviour(BaseBehaviour behaviour) => NPCBehaviour = behaviour;
public Team Team { get; set; } public Team Team { get; set; }
[HideInInspector]
private float LastTimeHit;
public CharacterCondition Condition;
public MovementController moveController;
private void Start() private void Start()
{
Condition = new CharacterCondition();
moveController = gameObject.GetComponent<MovementController>();
}
public override void OnEpisodeBegin()
{ {
} }
public override void CollectObservations(VectorSensor sensor) public override void CollectObservations(VectorSensor sensor)
{ {
// Target and Agent positions sensor.AddObservation(Condition.HealthPoints);
foreach (var _sensor in SensorList) sensor.AddObservation(Condition.ArmourPoints);
sensor.AddObservation(Condition.Ammunition);
sensor.AddObservation((int)Condition.npcState);
}
public override void Heuristic(in ActionBuffers actionsOut)
{
var discreteActionsOut = actionsOut.DiscreteActions;
if (Input.GetKeyDown(KeyCode.W))
{ {
sensor.AddObservation(1); // todo discreteActionsOut[0] = 1;
// sensor.AddObservation(_sensor.GetValue());
} }
} }
private void Update() public override void OnActionReceived(ActionBuffers actions)
{ {
//NPCBehaviour.DoAction(); if (actions.DiscreteActions[0] == 1)
moveController.MoveToRandomPoint();
}
public event Action<object> OnKilledEvent;
public void GetDamage(float damage)
{
Condition.GiveHealth(-Mathf.RoundToInt(damage * (1 - Condition.ArmourPoints * 0.5f)));
Condition.GiveArmour(-Mathf.RoundToInt(Mathf.Sqrt(damage) * 5));
if (Condition.HealthPoints < 0)
OnKilledEvent?.Invoke(this);
} }
} }

View File

@ -3,11 +3,15 @@ using UnityEngine;
public class MapManager : MonoBehaviour public class MapManager : MonoBehaviour
{ {
public List<NavPoint> navPoints { get; private set; } public static List<NavPoint> navPoints { get; private set; }
private void Start() private void Start()
{ {
navPoints = new List<NavPoint>();
var navPointsGameObj = GameObject.FindGameObjectsWithTag("Point"); var navPointsGameObj = GameObject.FindGameObjectsWithTag("Point");
foreach (var gameobj in navPointsGameObj) foreach (var gameobj in navPointsGameObj)
{
Debug.Log(" a ");
navPoints.Add(gameobj.GetComponent<NavPoint>()); navPoints.Add(gameobj.GetComponent<NavPoint>());
}
} }
} }

View File

@ -17,7 +17,6 @@ public class FlagZone : MonoBehaviour
{ {
timeForWin = SettingsReader.Instance.GetSettings.timeToWin; timeForWin = SettingsReader.Instance.GetSettings.timeToWin;
Debug.Log("32");
TimeStayAttackers = 0; TimeStayAttackers = 0;
TimeStayDefenders = 0; TimeStayDefenders = 0;
occupAttackers = 0; occupAttackers = 0;

View File

@ -1,18 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
private void Start()
{
}
void Update()
{
}
}

View File

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

View File

@ -3,6 +3,8 @@
[CreateAssetMenu(fileName ="Game Settings", menuName = "Game/Settings", order = 51)] [CreateAssetMenu(fileName ="Game Settings", menuName = "Game/Settings", order = 51)]
public class Settings : ScriptableObject public class Settings : ScriptableObject
{ {
public bool isTesting;
public float timeToWin; public float timeToWin;
public float timeOut; public float timeOut;
@ -21,4 +23,8 @@ public class Settings : ScriptableObject
public int armourPickupAmount; public int armourPickupAmount;
public int ammunitionPickupAmount; public int ammunitionPickupAmount;
public int pickupsAmount; public int pickupsAmount;
public int maxHealth;
public int maxArmour;
public int maxAmmo;
} }

View File

@ -9,7 +9,6 @@ public class SettingsReader : MonoBehaviour
private void Awake() private void Awake()
{ {
Debug.Log("init");
instance = this; instance = this;
} }

View File

@ -1,5 +0,0 @@
public interface ISensor<T>
{
T GetValue();
SensorType GetSensorType();
}

View File

@ -0,0 +1,4 @@
using System.Collections.Generic;
using Unity.MLAgents.Sensors;

View File

View File

@ -740,7 +740,3 @@ public abstract class DictionaryDrawer<TK, TV> : PropertyDrawer
} }
} }
} }
[Serializable] public class DictionaryOfTeamsAndNavPoints : SerializableDictionary<Team, NavPoint> { }
[CustomPropertyDrawer(typeof(DictionaryOfTeamsAndNavPoints))]
public class DictionaryOfTeamsAndNavPointsDrawer : DictionaryDrawer<Team, NavPoint> { }

View File

@ -12,6 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: e2c47233b9062c84482336b145c6891b, type: 3} m_Script: {fileID: 11500000, guid: e2c47233b9062c84482336b145c6891b, type: 3}
m_Name: Game Settings m_Name: Game Settings
m_EditorClassIdentifier: m_EditorClassIdentifier:
isTesting: 1
timeToWin: 5 timeToWin: 5
timeOut: 1600 timeOut: 1600
movementDistance: 50 movementDistance: 50
@ -26,3 +27,6 @@ MonoBehaviour:
armourPickupAmount: 50 armourPickupAmount: 50
ammunitionPickupAmount: 120 ammunitionPickupAmount: 120
pickupsAmount: 2 pickupsAmount: 2
maxHealth: 0
maxArmour: 0
maxAmmo: 0

View File

@ -712,5 +712,5 @@ PlayerSettings:
organizationId: unity_9asvqbkpr8e5lq organizationId: unity_9asvqbkpr8e5lq
cloudEnabled: 0 cloudEnabled: 0
enableNativePlatformBackendsForNewInputSystem: 1 enableNativePlatformBackendsForNewInputSystem: 1
disableOldInputManagerSupport: 1 disableOldInputManagerSupport: 0
legacyClampBlendShapeWeights: 0 legacyClampBlendShapeWeights: 0