Quantcast
Channel: Questions in topic: "enemy"
Viewing all articles
Browse latest Browse all 1488

How do I make a 2d enemy change direction upon hitting a wall?

$
0
0
I'm trying to make an enemy for my 2d platformer who moves to the right until they reach an edge or a wall, then moving left and repeating the process. I've managed to make it so they turn when reaching an edge, but not when hitting a wall. Instead, they keep running into the wall. Here's my code. using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyPatrol : MonoBehaviour { public float speed; public float distance; private bool movingRight = true; public Transform groundDetection; void Update() { transform.Translate(Vector2.right * speed * Time.deltaTime); RaycastHit2D groundInfo = Physics2D.Raycast(groundDetection.position, Vector2.down, distance); if (groundInfo.collider == false) { if (movingRight == true) { transform.eulerAngles = new Vector3(0, -180, 0); movingRight = false; } else { transform.eulerAngles = new Vector3(0, 0, 0); movingRight = true; } } private void OnCollisionEnter2D(Collision2D collision) if (collide.collider.gameObject.tag == "Wall") { Debug.Log("E"); if (movingRight == true) { transform.eulerAngles = new Vector3(0, -180, 0); movingRight = false; } else { transform.eulerAngles = new Vector3(0, 0, 0); movingRight = true; } } } }

Viewing all articles
Browse latest Browse all 1488

Trending Articles