mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 14:43:08 +02:00
Merge branch 'Development' into 'kuchy-soldiers'
# Conflicts: # The project/Assets/Scenes/SpartaqS.unity
This commit is contained in:
commit
c9ab4e1f93
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
54
The project/Assets/Scripts/Squad.cs
Normal file
54
The project/Assets/Scripts/Squad.cs
Normal 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 });
|
||||
}
|
||||
}
|
||||
11
The project/Assets/Scripts/Squad.cs.meta
Normal file
11
The project/Assets/Scripts/Squad.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eeef7310a48872043b4089979ec88b42
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -3,7 +3,9 @@
|
||||
--- !u!78 &1
|
||||
TagManager:
|
||||
serializedVersion: 2
|
||||
tags: []
|
||||
tags:
|
||||
- Enemy
|
||||
- 'Ally '
|
||||
layers:
|
||||
- Default
|
||||
- TransparentFX
|
||||
|
||||
Loading…
Reference in New Issue
Block a user