Unity2d move enemy in opposite direction on collision
Hey guys, I can't for the love of me figure out how to move my, let's say "Spider" enemy in the opposite direction once it starts moving and collides with a .tag named "Wall".
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class SpiderController : MonoBehaviour {
 
     public float moveSpeed; 
     private bool canMove; 
 
     public GameObject deatSpiderExplosion; 
 
     private Rigidbody2D myRigidBody; 
 
     //new with radius
     public Transform playerCheck;
 
     public float playerCheckRadius;
 
     public LayerMask whatIsPlayer;
 
 
 
 
 
     // Use this for initialization
     void Start () {
 
         myRigidBody = GetComponent<Rigidbody2D> ();
 
     }
     
     // Update is called once per frame
     void Update () {
 
 
 
         canMove = Physics2D.OverlapCircle(playerCheck.position, playerCheckRadius, whatIsPlayer);
 
         if (canMove) {
 
             myRigidBody.velocity = new Vector3 (-moveSpeed, myRigidBody.velocity.y, 0f);
 
         }
 
     }
 
     //void OnBecameVisible(){
 
         //canMove = true;
 
     //}
 
     void OnTriggerEnter2D(Collider2D other){
 
         if (other.tag == "KillPlane") {
 
             //Destroy (gameObject);
 
             gameObject.SetActive (false);
         
             Instantiate (deatSpiderExplosion, other.transform.position, other.transform.rotation);
 
         }
 
         if (other.tag == "Water") {
 
             //Destroy (gameObject);
 
             gameObject.SetActive (false);
 
             Instantiate (deatSpiderExplosion, other.transform.position, other.transform.rotation);
         }
     }
 
 
     void OnEnable(){
 
         canMove = false; 
 
     }
 
 }
So basically I have my spider move left once the player becomes visible. Within my world it will keep going left until it hits either the "killPlane" or "water" .tag, and it dies/gets disabled.
I've been trying to maybe make a OnCollisionEnter2D and change its x direction/movespeed to be positive, hence moving to the right, but it simply doesn't work. I don't necessarily know if it doesn't work because I put the movement into the Update function.
Any help would be much appreciated. :)
Answer by Paratrooper82 · Jan 28, 2018 at 02:43 PM
Wow... My bad, instant brain fart immediately after I posted this question. I hope my own answer helps anyone out there trying to do the same with an enemy. Within the OnTriggerEnter2D just add what I show below.
 void OnTriggerEnter2D(Collider2D other){
 
         if (other.tag == "KillPlane") {
 
             //Destroy (gameObject);
 
             gameObject.SetActive (false);
         
             Instantiate (deatSpiderExplosion, other.transform.position, other.transform.rotation);
 
         }
 
         if (other.tag == "Water") {
 
             //Destroy (gameObject);
 
             gameObject.SetActive (false);
 
             Instantiate (deatSpiderExplosion, other.transform.position, other.transform.rotation);
         }
 
         if (other.tag == "Wall") {
 
             moveSpeed *= -1; 
 
         }
 
     }
The -1 in my case makes the moveSpeed positive, hence moving right on the X axis, and then it will collide again, making the moveSpeed negative again, hence moving left on the X axis. :)
Your answer
 
 
             Follow this Question
Related Questions
How to set box collider to a gizmos cube size 0 Answers
Physics.OverlapSphere does not detect any 2D Box Colliders! 0 Answers
[ Help!! ] Issue with position Z in object 1 Answer
Delete prefab clone when collided with the player, Unity 2D 1 Answer
How to create a "trap" when ground is tiled with collider. 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                