- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- [CreateAssetMenu(menuName = "Abilities/PushAndPull2")]
- public class PushAndPull2 : Abilities
- {
- [SerializeField] private float minDistance;
- [SerializeField] private float moveForce;
- [SerializeField] private float enemyMoveForce;
- [SerializeField] private float endDistance;
- [SerializeField] private float range;
- Rigidbody selectedObject = null;
- PlayerController p;
- public override void Effects(PlayerController player)
- {
- RaycastHit hit;
- p = player;
- if (player.manaScript.mana > 0.5f)
- {
- player.manaScript.Consume(manaCost * Time.deltaTime * player.timeMultiplier);
- if (Physics.Raycast(new Vector3(player.transform.position.x, player.transform.position.y - 0.5f, player.transform.position.z), player.transform.forward, out hit, range) && p.currentTarget == null)
- {
-
- if (hit.collider.tag == "Box" || hit.collider.tag == "Enemy")
- {
- selectedObject = hit.rigidbody;
-
- if (hit.collider.tag == "Box")
- {
- player.currentTarget = hit.collider.GetComponent<BoxScript>(); player.currentTarget.CheckPos();
- player.currentTarget.Manipulation(true);
- }
- }
-
- }
- if (p.currentTarget != null)
- {
- if (p.currentTarget.CompareTag("Box"))
- {
- if (Vector3.Distance(player.transform.position, p.currentTarget.transform.position) > minDistance)
- selectedObject.velocity = new Vector3(player.transform.position.x - p.currentTarget.transform.position.x, 0, player.transform.position.z - p.currentTarget.transform.position.z).normalized * moveForce * p.directionPushAndPull;
- else
- {
- if (player.directionPushAndPull == 1)
- selectedObject.velocity = Vector3.zero;
- else selectedObject.velocity = new Vector3(player.transform.position.x - p.currentTarget.transform.position.x, 0 , player.transform.position.z - p.currentTarget.transform.position.z).normalized * moveForce * p.directionPushAndPull;
- }
- }
-
- if (Vector3.Distance(player.transform.position, p.currentTarget.transform.position) > endDistance) player.EndPushAndPull();
- }
- if(selectedObject != null && selectedObject.gameObject.CompareTag("Enemy"))
- {
- selectedObject.velocity += (player.transform.position - selectedObject.gameObject.transform.position).normalized * enemyMoveForce * player.directionPushAndPull;
- if (Vector3.Distance(player.transform.position, selectedObject.gameObject.transform.position) > 10)
- selectedObject = null;
- }
- }
- else player.EndPushAndPull();
- }
- }