enemy multiple target support & enemy stop when being squezed
This commit is contained in:
parent
49360ba4e8
commit
e3f54b785a
|
@ -422,6 +422,7 @@ GameObject:
|
||||||
- component: {fileID: 220016285}
|
- component: {fileID: 220016285}
|
||||||
- component: {fileID: 220016286}
|
- component: {fileID: 220016286}
|
||||||
- component: {fileID: 220016287}
|
- component: {fileID: 220016287}
|
||||||
|
- component: {fileID: 220016288}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Enemy
|
m_Name: Enemy
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
|
@ -441,7 +442,13 @@ MonoBehaviour:
|
||||||
m_Script: {fileID: 11500000, guid: 6a3ffc4a3af9e0243ac9ee0c995bb82f, type: 3}
|
m_Script: {fileID: 11500000, guid: 6a3ffc4a3af9e0243ac9ee0c995bb82f, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
target: {fileID: 227211242}
|
targets:
|
||||||
|
- {fileID: 227211242}
|
||||||
|
- {fileID: 1259212314}
|
||||||
|
ropeDistCheck: 1
|
||||||
|
ropeCheckMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 64
|
||||||
--- !u!195 &220016282
|
--- !u!195 &220016282
|
||||||
NavMeshAgent:
|
NavMeshAgent:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -566,7 +573,7 @@ CircleCollider2D:
|
||||||
m_Material: {fileID: 0}
|
m_Material: {fileID: 0}
|
||||||
m_IncludeLayers:
|
m_IncludeLayers:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 0
|
m_Bits: 4294967295
|
||||||
m_ExcludeLayers:
|
m_ExcludeLayers:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 0
|
m_Bits: 0
|
||||||
|
@ -621,7 +628,34 @@ MonoBehaviour:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
minThreshold: 1
|
minThreshold: 1
|
||||||
squezeDamageScalor: 1
|
squezeDamageScalor: 0
|
||||||
|
--- !u!50 &220016288
|
||||||
|
Rigidbody2D:
|
||||||
|
serializedVersion: 4
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 220016280}
|
||||||
|
m_BodyType: 0
|
||||||
|
m_Simulated: 1
|
||||||
|
m_UseFullKinematicContacts: 0
|
||||||
|
m_UseAutoMass: 0
|
||||||
|
m_Mass: 1
|
||||||
|
m_LinearDrag: 0
|
||||||
|
m_AngularDrag: 0.05
|
||||||
|
m_GravityScale: 0
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_Interpolate: 0
|
||||||
|
m_SleepingMode: 1
|
||||||
|
m_CollisionDetection: 0
|
||||||
|
m_Constraints: 0
|
||||||
--- !u!114 &227211240 stripped
|
--- !u!114 &227211240 stripped
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_CorrespondingSourceObject: {fileID: 5467488512035376674, guid: 99a6ff8b9591949439b620b13bd249a4, type: 3}
|
m_CorrespondingSourceObject: {fileID: 5467488512035376674, guid: 99a6ff8b9591949439b620b13bd249a4, type: 3}
|
||||||
|
@ -1458,6 +1492,11 @@ MonoBehaviour:
|
||||||
m_Script: {fileID: 11500000, guid: 4aabce12c1341ff488ee4dc806fd80e8, type: 3}
|
m_Script: {fileID: 11500000, guid: 4aabce12c1341ff488ee4dc806fd80e8, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!4 &1259212314 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 320690117028550720, guid: 99a6ff8b9591949439b620b13bd249a4, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 1844950416}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!114 &1259212316 stripped
|
--- !u!114 &1259212316 stripped
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_CorrespondingSourceObject: {fileID: 1749848915408613053, guid: 99a6ff8b9591949439b620b13bd249a4, type: 3}
|
m_CorrespondingSourceObject: {fileID: 1749848915408613053, guid: 99a6ff8b9591949439b620b13bd249a4, type: 3}
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.AI;
|
using UnityEngine.AI;
|
||||||
|
|
||||||
public class EnemyPathFinding : MonoBehaviour
|
public class EnemyPathFinding : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField] private Transform target;
|
[SerializeField] private Transform[] targets;
|
||||||
|
|
||||||
|
[SerializeField] private float ropeDistCheck = 1f;
|
||||||
|
[SerializeField] private LayerMask ropeCheckMask;
|
||||||
|
|
||||||
NavMeshAgent agent;
|
NavMeshAgent agent;
|
||||||
private void Start()
|
private void Start()
|
||||||
|
@ -16,6 +20,30 @@ public class EnemyPathFinding : MonoBehaviour
|
||||||
}
|
}
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
agent.SetDestination(target.position);
|
Transform closestTarget = GetClosestTarget();
|
||||||
|
if (closestTarget == null) return;
|
||||||
|
|
||||||
|
// Make sure no rope parts are in front
|
||||||
|
Vector2 dir = closestTarget.position - transform.position;
|
||||||
|
if (Physics2D.Raycast(transform.position, dir.normalized, ropeDistCheck, ropeCheckMask))
|
||||||
|
return;
|
||||||
|
|
||||||
|
agent.SetDestination(closestTarget.position);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Transform GetClosestTarget()
|
||||||
|
{
|
||||||
|
float dist = Mathf.Infinity;
|
||||||
|
Transform shortest = targets[0];
|
||||||
|
foreach (var target in targets)
|
||||||
|
{
|
||||||
|
float targetDist = Vector2.Distance(target.position, transform.position);
|
||||||
|
if (targetDist < dist)
|
||||||
|
{
|
||||||
|
dist = targetDist;
|
||||||
|
shortest = target;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return shortest;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue