Newer
Older
Dreamsturbia-Project-IADE-Unity3D / Assets / Scripts / Player / Abilities / PushAndPull.cs
@Rackday Rackday on 21 Aug 2024 2 KB Project Added
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. [CreateAssetMenu(menuName = "Abilities/PushAndPull")]
  5. public class PushAndPull : Abilities
  6. {
  7. [SerializeField] private float minDistance;
  8. [SerializeField] private float maxDistance;
  9. [SerializeField] private float endDistance;
  10. [SerializeField] private float moveForce;
  11. Rigidbody selectedObject = null;
  12. PlayerController p;
  13. public override void Effects(PlayerController player)
  14. {
  15. RaycastHit hit;
  16. p = player;
  17. if (player.manaScript.mana > manaCost)
  18. {
  19. if (Physics.Raycast(new Vector3(player.transform.position.x, player.transform.position.y - 0.5f, player.transform.position.z), player.transform.forward, out hit, 5f) && p.currentTarget == null)
  20. {
  21. if (hit.collider.tag == "Box") { player.currentTarget = hit.collider.GetComponent<BoxScript>(); player.currentTarget.CheckPos(); }
  22. selectedObject = hit.rigidbody;
  23. player.currentTarget.Manipulation(true);
  24. }
  25. if (p.currentTarget != null)
  26. {
  27. if (Vector3.Distance(p.transform.position, p.currentTarget.transform.position) < minDistance)
  28. {
  29. selectedObject.AddForce(p.transform.forward * moveForce, ForceMode.VelocityChange);
  30. }
  31. if (Vector3.Distance(p.transform.position, p.currentTarget.transform.position) > maxDistance)
  32. {
  33. selectedObject.AddForce((p.transform.position - p.currentTarget.transform.position)* moveForce, ForceMode.VelocityChange);
  34. }
  35. if (Vector3.Distance(p.transform.position, p.currentTarget.transform.position) < maxDistance && Vector3.Distance(p.transform.position, p.currentTarget.transform.position) > minDistance)
  36. selectedObject.velocity = Vector3.zero;
  37. if (Vector3.Distance(p.transform.position, p.currentTarget.transform.position) > endDistance)
  38. {
  39. p.EndPushAndPull();
  40. }
  41. }
  42. }
  43. }
  44. }