Merge branch 'Development' into 'kuchy-soldiers'

# Conflicts:
#   The project/Assets/Scenes/SpartaqS.unity
This commit is contained in:
Krzysztof Stefan Rudnicki 2022-05-16 12:26:26 +00:00
commit c9ab4e1f93
7 changed files with 310 additions and 20 deletions

View File

@ -14,7 +14,7 @@ GameObject:
- component: {fileID: 1033819704020761458}
m_Layer: 0
m_Name: Soldier
m_TagString: Untagged
m_TagString: 'Ally '
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

View File

@ -134,6 +134,7 @@ GameObject:
- component: {fileID: 511887294}
- component: {fileID: 511887293}
- component: {fileID: 511887292}
- component: {fileID: 511887295}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
@ -207,6 +208,39 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &511887295
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 511887291}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 0
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
--- !u!1001 &1188979422
PrefabInstance:
m_ObjectHideFlags: 0
@ -274,6 +308,100 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9215955991629613539, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_UseGravity
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9215955991629613539, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_IsKinematic
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2, type: 3}
--- !u!1001 &1413714403
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 403095692180922766, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_Name
value: Soldier (1)
objectReference: {fileID: 0}
- target: {fileID: 403095692180922766, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_TagString
value: Enemy
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalPosition.x
value: -6.8476
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalPosition.z
value: 4.6102185
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 430939372503899243, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9215955991629613539, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_UseGravity
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9215955991629613539, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2,
type: 3}
propertyPath: m_IsKinematic
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2, type: 3}
--- !u!1 &2045132977
@ -369,7 +497,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!114 &2045132980
MonoBehaviour:

View File

@ -322,7 +322,7 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1030936245
--- !u!1 &619856669
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -330,42 +330,86 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1030936246}
- component: {fileID: 1030936247}
- component: {fileID: 619856671}
- component: {fileID: 619856670}
m_Layer: 0
m_Name: ExampleTickReceiver
m_Name: DebugSoldier1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1030936246
--- !u!114 &619856670
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 619856669}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d34caf35d0ce610f8bc87cf815ba1915, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &619856671
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1030936245}
m_GameObject: {fileID: 619856669}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1030936247
--- !u!1 &728282086
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 728282088}
- component: {fileID: 728282087}
m_Layer: 0
m_Name: DebugSoldier2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &728282087
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1030936245}
m_GameObject: {fileID: 728282086}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a1201c89332e3f946a28bbc1294750be, type: 3}
m_Script: {fileID: 11500000, guid: d34caf35d0ce610f8bc87cf815ba1915, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &728282088
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 728282086}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1051848805
PrefabInstance:
m_ObjectHideFlags: 0
@ -435,3 +479,50 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 519502c6f18d5e44eb800aefd848a6e6, type: 3}
--- !u!1 &1440849007
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1440849008}
- component: {fileID: 1440849009}
m_Layer: 0
m_Name: SquadObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1440849008
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1440849007}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1440849009
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1440849007}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eeef7310a48872043b4089979ec88b42, type: 3}
m_Name:
m_EditorClassIdentifier:
soldiers:
- {fileID: 619856670}
- {fileID: 728282087}

View File

@ -4,14 +4,17 @@ using UnityEngine;
public class Soldier : MonoBehaviour
{
private const string enemyTag = "Enemy";
private const float healthPoints = 1;
private const float rangeAttack = 1;
private const float rangeView = 1;
private const float damageAttack = 1;
private const float speedAttack = 1;
[SerializeField] private Transform target;
[SerializeField] private string enemyTag;
[SerializeField] private float healthPoints = 1;
[SerializeField] private float rangeAttack = 1;
[SerializeField] private float rangeView = 1;
[SerializeField] private float damageAttack = 1;
[SerializeField] private float speedAttack = 1;
// Start is called before the first frame update
void Start(){
if(gameObject.tag == "Ally") enemyTag = "Enemy";
else enemyTag = "Ally";
InvokeRepeating("UpdateTarget", 0f, 0.5f);
// Call UpdateTarget method at the begining of the Start()
// and repeat every 0.5 second
@ -22,6 +25,7 @@ public class Soldier : MonoBehaviour
{
// Enemies are the game objects tagged with the "Enemy"
GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag);
Debug.Log(enemies.Length);
// We have not found enemy yet so the distance to enemy is "infinite"
float shortestDistance = Mathf.Infinity;
GameObject nearestEnemy = null;
@ -39,7 +43,7 @@ public class Soldier : MonoBehaviour
if (nearestEnemy != null && shortestDistance <= rangeAttack)
{
target = nearestEnemey.transform;
target = nearestEnemy.transform;
}
}

View File

@ -0,0 +1,54 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Squad : MonoBehaviour
{
public abstract class Order // generic order (to keep in queue)
{
public virtual void PassToSoldier(Soldier targetSoldier) // "translate" the order to the soldier
{// depending on implementation, for example call soldier's method to execute/plan this task
Debug.LogWarning($"Generic order passing not overriden\nSoldier {targetSoldier.name} received generic order");
}
}
public class MovementOrder : Order // example how to add new types of orders
{
public int x;
public int y;
public override void PassToSoldier(Soldier targetSoldier)
{// here we would set soldier's target position for example
Debug.Log($"Soldier {targetSoldier.name} received movement order towards coordinates {x},{y}");
}
}
[SerializeField] private List<Soldier> soldiers = new List<Soldier>(); // soldiers belonging to the squad
private Queue<Order> orders = new Queue<Order>(); // orders given to the squad
private void Awake()
{
TickSystem.OnTick += HandleTick;
}
private void HandleTick(TickSystem.OnTickEventArgs eventArgs)
{// pass a single order to all soldiers
if (orders.Count < 1)
return; // for now nothing to do here
Order currentOrder = orders.Dequeue();
Debug.Log($"Passing order {currentOrder.ToString()} on tick #{eventArgs.tickNumber}");
foreach (Soldier soldier in soldiers)
{
currentOrder.PassToSoldier(soldier);
}
}
[ContextMenu("DEBUG ADD PSEUDO MOVEMENT ORDER")]
public void DebugAddMovementOrder()
{
int targetX = 4;
int targetY = 2;
orders.Enqueue(new MovementOrder() { x = targetX, y = targetY });
}
}

View File

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

View File

@ -3,7 +3,9 @@
--- !u!78 &1
TagManager:
serializedVersion: 2
tags: []
tags:
- Enemy
- 'Ally '
layers:
- Default
- TransparentFX