Okay I have a 2D topdown game where my player moves anywhere by mouse click. I want my enemies to push back my player on collision. I have a movement script on my enemies as well. Maybe the problem is that i need to disable the movement script on my player once it collides with the enemy so that my player would get pushed back then re-enable it after it get pushed back. But how would I do that? I need a script that bounce my player of my enemy on collision! I’ve looked on Google but I couldn’t find any that match my description. Could anybody help me please! Thank you! here’s my player movement script:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MainPlayer : MonoBehaviour {
public float speed = 5f;
public Text ScoreText;
public AudioClip Coinsound;
private Vector3 target;
private int Score;
void Start ()
{
target = transform.position;
Score = 0;
SetScoreText ();
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag ("Pick Up"))
{
other.gameObject.SetActive (false);
Score = Score + 1;
SetScoreText ();
AudioSource.PlayClipAtPoint (Coinsound, transform.position);
}
}
void SetScoreText ()
{
ScoreText.text = "Score: " + Score.ToString ();
}
void Update () {
if (Input.GetMouseButtonDown (0)) {
target = Camera.main.ScreenToWorldPoint (Input.mousePosition);
target.z = transform.position.z;
}
transform.position = Vector3.MoveTowards (transform.position, target, speed * Time.deltaTime);
}
void LateUpdate () {
var left = Camera.main.ViewportToWorldPoint (Vector3.zero).x;
var right = Camera.main.ViewportToWorldPoint (Vector3.one).x;
var top = Camera.main.ViewportToWorldPoint (Vector3.zero).y;
var bottom = Camera.main.ViewportToWorldPoint (Vector3.one).y;
float x = transform.position.x, y = transform.position.y;
if (transform.position.x <= left + GetComponent<Renderer> ().bounds.extents.x) {
x = left + GetComponent<Renderer> ().bounds.extents.x;
} else if (transform.position.x >= right - GetComponent<Renderer> ().bounds.extents.x) {
x = right - GetComponent<Renderer> ().bounds.extents.x;
}
if (transform.position.y <= top + GetComponent<Renderer> ().bounds.extents.y) {
y = top + GetComponent<Renderer> ().bounds.extents.y;
} else if (transform.position.y >= bottom - GetComponent<Renderer> ().bounds.extents.y) {
y = bottom - GetComponent<Renderer> ().bounds.extents.y;
}
transform.position = new Vector3 (x, y, transform.position.z);
}
}