Using mobile touch to push objects with OnTrigger2D Collider?
Hello, I am creating a mobile game where you protect a player by moving enemies away from it with the mobile touch. This is working fine. My issue is that I want some of my enemies when touched by the user to be used to push other enemies. I've been looking at Force commands but non of it just does simple pushing and it normally knocks my enemies out of their set movements.
I am using Triggers as my colliders and when I tried to add a non-triggered collider the touch feature stopped working. Does anyone know a simple way to make a touch gameobject that is following you finger around have the ability to simply push other game objects with a specific tag?
I currently have this:
public class PushObject : MonoBehaviour {
private void OnTriggerStay2D(Collider2D other)
{
other.transform.position = new Vector2(transform.position.x, transform.position.y);
}
}
But that just makes the gameobject drag beneath the touched object. I can't image this would really be that difficult.
Here is what my unity view is:
This is my Drag and Drop Code looks like, if you think I need to change it to make pushing other object easier.
public class DragAndDrop : MonoBehaviour
{
bool moveAllowed;
public bool canMove = true;
Collider2D col;
public GameObject shadowDown;
public GameObject shadowUp;
//Particle System
public GameObject selectionEffect;
// Start is called before the first frame update
void Start()
{
col = GetComponent<Collider2D>();
}
// Update is called once per frame
void Update()
{
if (canMove)
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
Vector2 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
//start of touch
if (touch.phase == TouchPhase.Began)
{
Collider2D touchCollider = Physics2D.OverlapPoint(touchPosition);
if (col == touchCollider)
{
moveAllowed = true;
//Particle
if (selectionEffect != null)
{
Instantiate(selectionEffect, transform.position, Quaternion.identity);
}
//Shadow
if (shadowDown != null)
{
shadowDown.SetActive(false);
}
if (shadowUp != null)
{
shadowUp.SetActive(true);
}
}
}
//during touch
if (touch.phase == TouchPhase.Moved)
{
if (moveAllowed)
{
transform.position = new Vector2(touchPosition.x, touchPosition.y);
}
}
//finish touch
if (touch.phase == TouchPhase.Ended)
{
moveAllowed = false;
//Shadow
if (shadowDown != null)
{
shadowDown.SetActive(true);
}
if (shadowUp != null)
{
shadowUp.SetActive(false);
}
}
}
}
}
Thank you in advance for your help!