SprintLinkTrigger.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class SprintLinkTrigger : MonoBehaviour
  5. {
  6. public GameObject enemyRopePrefab;
  7. public GameObject playerRopePrefab;
  8. public Dictionary<Enemy, bool> linkedEnemyDic;
  9. public List<Enemy> linkedEnemy;
  10. public int playerID;
  11. private void Awake()
  12. {
  13. linkedEnemyDic = new Dictionary<Enemy, bool>();
  14. linkedEnemy = new List<Enemy>();
  15. }
  16. private void OnTriggerEnter(Collider other)
  17. {
  18. BeSearchTrigger beSearchTrigger = other.GetComponent<BeSearchTrigger>();
  19. if (!beSearchTrigger)
  20. {
  21. return;
  22. }
  23. Enemy enemy = other.GetComponentInParent<Enemy>();
  24. if (!enemy || linkedEnemyDic.ContainsKey(enemy))
  25. {
  26. return;
  27. }
  28. if (linkedEnemy.Count > 0)
  29. {
  30. LinkEnemy(enemy, linkedEnemy[linkedEnemy.Count - 1]);
  31. }
  32. LinkPlayer(enemy);
  33. }
  34. public void LinkEnemy(Enemy enemy1, Enemy enemy2)
  35. {
  36. GameObject ropeObj = PoolManager.Instantiate(enemyRopePrefab);
  37. CharacterRope rope = ropeObj.GetComponent<CharacterRope>();
  38. rope.BeLink(enemy1, enemy2);
  39. }
  40. public void LinkPlayer(Enemy enemy)
  41. {
  42. linkedEnemyDic.Add(enemy, true);
  43. linkedEnemy.Add(enemy);
  44. PlayersInput.instance[playerID].playerRope.BeLink(enemy);
  45. }
  46. }