CharacterRope.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using RopeToolkit;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using Unity.VisualScripting;
  5. using UnityEngine;
  6. using UnityEngine.TextCore.Text;
  7. public class CharacterRope : MonoBehaviour
  8. {
  9. public Rope rope;
  10. public RopeConnection conn1, conn2;
  11. public Character target1;
  12. public Character target2;
  13. private void Awake()
  14. {
  15. RopeConnection[] conns = rope.GetComponents<RopeConnection>();
  16. conn1 = conns[0];
  17. conn2 = conns[1];
  18. }
  19. public void BeLink(Character character1, Character character2, bool addJoint = true)
  20. {
  21. transform.position = Vector3.zero;
  22. target1 = character1;
  23. target2 = character2;
  24. conn1.transformSettings.transform = character1.transform;
  25. conn2.transformSettings.transform = character2.transform;
  26. conn1.rigidbodySettings.body = character1.GetComponent<Rigidbody>();
  27. conn2.rigidbodySettings.body = character2.GetComponent<Rigidbody>();
  28. rope.spawnPoints.Clear();
  29. rope.spawnPoints.Add(character1.transform.position);
  30. rope.spawnPoints.Add(character2.transform.position);
  31. rope.gameObject.SetActive(true);
  32. character1.linked = true;
  33. if (addJoint)
  34. {
  35. if (!character1.joint)
  36. {
  37. character1.joint = character1.AddComponent<RopeJoint>();
  38. }
  39. character1.joint.rb = character1.rb;
  40. character1.joint.connectedBody = character2.rb;
  41. character1.joint.maxDistance = (character1.transform.position - character2.transform.position).magnitude;
  42. character1.rope = this;
  43. }
  44. }
  45. private void FixedUpdate()
  46. {
  47. if ((!target1 || target1.isDie) || (!target2 || target2.isDie))
  48. {
  49. gameObject.SetActive(false);
  50. }
  51. }
  52. }